Entrer des informations sur plusieurs lignes dans une cellule à partir d'un fichier csv

Bonjour

Je crée un fichier destiné à être traité par calc, et je voudrais
introduire un passage à la ligne dans certaines cellules. Je suppose que je
dois utliler un caractère de contrôle particulier, mais je ne trouve pas
lequel.

Merci d'avance à quiconque pourra m'indiquer comment faire, et d'une
manière plus générale, où je peux trouver de l'information sur la manière
d'introduire des objets particuliers (liens hypertexte, images, …) dans les
cellules.

Arbiel

Bonjour,

d'après votre message, on dirait que le fichier créé n'est pas créé par
calc c'est ça ?
si oui, le mieux est alors peut-être d'ouvrir un fichier calc avec tous les
éléments souhaités (juste après l'avoir renommé en .ZIP) et dans ce cas, le
fichier content.xml répondra à votre question.

Si non,
Crl-enter permet de passer à la ligne quand on est dans une cellule.
Les liens hyperliens, Ctrl-K
images, insertions - images...

Yves

Bonjour Arbiel,

Je crée un fichier destiné à être traité par calc, et je voudrais
introduire un passage à la ligne dans certaines cellules. Je suppose que je
dois utliler un caractère de contrôle particulier, mais je ne trouve pas
lequel.

Merci d'avance à quiconque pourra m'indiquer comment faire

Pourquoi ne pas tester "à l'envers" en exportant un CSV depuis une feuille Calc dont certaines cellules disposeraient des enrichissements que vous recherchez ? Vous pourrez ainsi constater le type de caractère inséré.

Bien cordialement,

lors de l'exportation depuis Calc, prenez la précaution de cocher "Editer les paramètres de filtre", puis, dans ledit dialogue de paramétrage, de cocher "Mettre entre guillemets toutes les cellules de texte", sinon le résultat sera "décevant".

Bien cordialement,

Bonjour Jean-François,
La question posée m'intéresse beaucoup. J'ai testé l'export csv comme tu
nous le suggères, à savoir insérer des retours chariot au sein d'une
cellule. Malheureusement, le caractère spécial \n n'apparaît pas :

ubuntu@ubuntu-W54-55SU1-SUW:~/Temp$ cat cellule.csv
"Ceci est un texte bien trop long pour tenir dans une cellule"
"Ceci est un
Texte formaté
Pour tenir
Dans une cellule"

Ce petit fichier tient dans 2 cellules comme je le souhaite.

J'ai bien souvent à traiter des fichiers Calc où des cellules contiennent du
texte sans retour chariot. Je voudrais, avec des REGEX, en introduire mais
je ne crois pas que ce soit possible.

Bonjour Dominique,

La question posée m'intéresse beaucoup. J'ai testé l'export csv comme tu
nous le suggères, à savoir insérer des retours chariot au sein d'une
cellule. Malheureusement, le caractère spécial \n n'apparaît pas :

ubuntu@ubuntu-W54-55SU1-SUW:~/Temp$ cat cellule.csv
"Ceci est un texte bien trop long pour tenir dans une cellule"
"Ceci est un
Texte formaté
Pour tenir
Dans une cellule"

Ce petit fichier tient dans 2 cellules comme je le souhaite.

J'ai bien souvent à traiter des fichiers Calc où des cellules contiennent du
texte sans retour chariot. Je voudrais, avec des REGEX, en introduire mais
je ne crois pas que ce soit possible.

Le caractère inséré est un LF (ascii 10) ou \n comme dit par Starway.

Or, la commande cat n'affiche pas les LF. Si tu ouvres le fichier sous Geany (Linux) ou sous Notepad++ (Windows) tu peux configurer l'éditeur afin qu'il affiche ces caractères et tu les verras.

Voici le résultat d'un export CSV à partir d'un fichier de test ods. Ce fichier comporte trois lignes (1, 2, 3) de trois colonnes (A, B, C). La cellule A1 contient du texte avec deux sauts de ligne. J'obtiens ceci [les <LF> sont des ajouts manuels de ma part ici] :

"un<LF>
Deux<LF>
Trois","neuf","dix"<LF>
"Deux","trois","quatre"<LF>
"cinq","six","sept"<LF>

Ce qui signifie que si tu insères des <LF> aux "bons" endroits au sein des chaînes, tu auras les retours à la ligne.

Pour résumer :
-- les <LF> à l'intérieur des (guillemets) délimiteurs entraînent un saut de ligne dans la donnée (cellule).
-- Les <LF> hors délimiteurs de texte provoquent l'interprétation d'une nouvelle ligne (enregistrement) dans le fichier.

Bien cordialement,

En complément aux explications de Jean-François,

sous windows, le délimiteur d'enregistrement sera <CR><LF> au lieu de <LF>
sous un système linux :wink:

Yves

Bonjour Yves,

merci pour cette piqûre de rappel : Windows <> Linux !
C'est tellement évident qu'on n'y pense plus...

En complément aux explications de Jean-François,

sous windows, le délimiteur d'enregistrement sera <CR><LF> au lieu de
<LF> sous un système linux :wink:

Donc synthèse du résumé des épisodes précédents :

nous avons deux marqueurs : un marqueur de fin de ligne (fin d'enregistrement) et un marqueur de saut de ligne (saut de ligne dans la donnée).

-- Saut de ligne dans la donnée : toujours <LF> seul
    le <LF> doit se trouver à l'INtérieur des délimiteurs de texte
-- Saut d'enregistrement : <LF> sous Linux, <CR><LF> sous Windows
    le <LF> ou <CR><LF> doit se trouver à l'EXtérieur des délimiteurs de texte

Avec :
LF : Ascii 10
CR : Ascii 13

-> Ceux qui veulent influer sur les contenus de cellules (la donnée) doivent donc juste ajouter un <LF> à l'endroit kivabien.

Amicalement,

Bonjour Jean-François,

Je suis arrivé à quelque chose. Avec gedit, j'ai saisi ces données :

"ceci est un texte très long";
"ceci est un \n
texte formaté \n
pour tenir sur\n
4 lignes"

Dans LIBO, j'obtiens ceci :
https://framapic.org/sTSGj7QMxbg5/f8pVrklyYDiO.jpg
qui correspond sensiblement à ce que j'attends (un petit coup de Rechercher
& remplacer et de REGEX et tout est propre.)

Or, j'ai la sensation qu'il n'est pas possible d'introduire ce CHAR(10) (\n)
directement dans une cellule de Calc par le canal de Ctrl h. Suis-je dans le
vrai ? Si oui, cela veut-il dire qu'il faut exporter un tableau Calc en csv,
retraiter les données afin d'introduire les \n là où je les veux puis
réimporter le tout dans Calc ?

Je te remercie pour ton aide. Bonne journée.

En fait, ce que je dis est stupide : j'ai introduit les sauts de lignes dans
gedit « à la main ». Mes \n ne servent absolument à rien.

Ma question reste donc entière : est-il possible d'introduire ce caractère
LF au sein d'une ou plusieurs cellules par Rechercher & remplacer ou par une
autre méthode, sauf à la main, cellule par cellule :slight_smile:

Bonne journée.

tout dépend, si c'est automatique, il faut forcément qq chose qui puisse
être identifiable pour savoir où ajouter ces sauts de ligne ..... (le nbre
de caractères, une chaine spéciale, un caractère spécial, etc....)
en exemple concret serait le bienvenu

Yves

Bonsoir Yves,

Imaginons un tableur Calc comme ceci :

Cellule A1 Voici un mail
Cellule A2 adressé par
Cellule A3 M Dupont.

(Idem en A4,5 et 6 puis A7, 8 et 9 etc)

En cellule B1, C1 et au-delà, j'ai des informations qui m'intéressent (rien en B2, C2, B3, C3 et au-delà). Je sais intégrer une colonne B vierge et, avec une petite formule, concaténer les cellules A1, 2 et 3 au sein d'une seule cellule B1.

Comme j'ai des informations récurrentes (mail, adressé, par), je sais introduire des caractères. Comment introduire en B1 le caractère LF (suis sous Linux) qui soit suivi d'un vrai retour à la ligne et qui me donne, en B1 ceci :

Voici un mail
adressé par
M Dupont

Je te remercie et te souhaite une agréable soirée,

dans B1 : =A1&CAR(10)&A2& CAR(10)&A3

nb : tu devras peut-être redimensionner la hauteur de la cellule en
conséquence :wink:
Yves

Je m'aperçois que ma réponse n'a été adressée qu'à Jean-François
Nifenecker, j'en suis désolé et tente ici de réparer cette erreur de ma
part.

Bonjour Yves,

Repérer des emplacements avec des expressions régulières ne me pose aucun
problème. La question que je me pose est la suivante. Soit une cellule qui
comporte le message suivant :

Ce texte est bien trop longXXXpour une seule cellule

Le XXX et mis arbitrairement pour l'exemple, pour dire que c'est là que je
veux introduire un saut de ligne au sein de ma cellule pour qu'elle se
présente ainsi :

Ce texte est bien trop long
pour une seule cellule.

Dans Rechercher&Remplacer, que me faut passer comme caractère en échange de
XXX pour que le saut de ligne soit effectif dans ma cellule ?

J'espère être un peu plus clair et te souhaite une agréable journée.

Yves,
J'ai ma réponse grâce à toi et ça marche : dans B1 : =A1&CAR(10)&A2&
CAR(10)&A3 !
Je la mets de côté et je te remercie !