Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout de séparateurs parasites lors de l'édition / sauvegarde d' un

3 réponses
Avatar
Antoine
Bonjour,

Voici un problème qui me fait perdre la boule depuis un certain temps...

Prenons un exemple concret.

J'ai un fichier CSV fabriqué par un logiciel. Voici son contenu lorsqu'il
est édité sous Wordpad par exemple :
"
A;B;C
1;2;3
4;5;6
7;8;9
a;b;c;d;e;f;g;h;i
1;2;3;4;5;6;7;8;9
"

Je l'ouvre sous Excel, en choisissant comme séparateur de colonne le ";"

Sans rien modifier, je fais juste "Enregistrer sous".
Lorsque Excel me demande si je suis prêt à perdre les informations non
compatibles, je réponds "OUI", puisque je veux juste conserver mes données,
pas leur mise en forme.

Le fichier ainsi sauvé est de cette forme si je l'édite sous Wordpad :
"
A;B;C;;;;;;
1;2;3;;;;;;
4;5;6;;;;;;
7;8;9;;;;;;
a;b;c;d;e;f;g;h;i
1;2;3;4;5;6;7;8;9
"

Il y a donc eu ajout de ";" par Excel sur toutes les lignes qui avaient
moins de champs que celle qui en a le plus.
Ici, mes 2 dernières lignes ont 9 champs (8 séparateurs ";"). Les autres en
ont juste 3 (2 séparateurs ";"). Excel a donc ajouté 8-2=6 séparateurs sur
ces lignes.

Cela est génant pour l'utilisation que je souhaite faire ensuite de ce
fichier, car il ne sera plus accepté par le logiciel qui devra le traiter...

Existe-t'il un moyen d'éditer sous Excel un fichier CSV en interprétant les
séparateurs pour mettre les données en colonne, puis de sauvegarder ce
fichier depuis Excel pour le remettre en CSV, mais avec le même nombre de ";"
sur chaque ligne ?

Note : l'exemple ci-dessus est évidemment un simple exemple pour illustrer
mon problème.
Mon besoin est d'ouvrir par macro le fichier CSV original sous forme de
colonnes afin de le modifier automatiquement par macro (suppression de lignes
selon un critère), puis enregistré le fichier ainsi modifié en CSV.

J'ai essayé lors de la sauvegarde par macro (fonction
"Workbooks(id).SaveAs") différents formats "xlCSV", "xlCSVMSDOS, ou
"xlCSVWindows" mais cela ne change rien...

Merci par avance pour vos précieuses réponses.

A bientôt !

3 réponses

Avatar
papou
Bonjour
Il me semble que cela va être difficile.
Excel interprète l'ensemble de tes données et ajoute donc - fort logiquement
selon moi - les séparateurs dans la structure du fichier CSV.
Je conçois mal comment un logiciel peut exporter des données avec des
paramètres de champs différents sur les enregistrements.
Ou alors il y a plusieurs bases différentes exportées en même temps ?
...Ou alors je n'ai rien compris ?

Cordialement
Pascal

"Antoine" a écrit dans le message de
news:
Bonjour,

Voici un problème qui me fait perdre la boule depuis un certain temps...

Prenons un exemple concret.

J'ai un fichier CSV fabriqué par un logiciel. Voici son contenu lorsqu'il
est édité sous Wordpad par exemple :
"
A;B;C
1;2;3
4;5;6
7;8;9
a;b;c;d;e;f;g;h;i
1;2;3;4;5;6;7;8;9
"

Je l'ouvre sous Excel, en choisissant comme séparateur de colonne le ";"

Sans rien modifier, je fais juste "Enregistrer sous".
Lorsque Excel me demande si je suis prêt à perdre les informations non
compatibles, je réponds "OUI", puisque je veux juste conserver mes
données,
pas leur mise en forme.

Le fichier ainsi sauvé est de cette forme si je l'édite sous Wordpad :
"
A;B;C;;;;;;
1;2;3;;;;;;
4;5;6;;;;;;
7;8;9;;;;;;
a;b;c;d;e;f;g;h;i
1;2;3;4;5;6;7;8;9
"

Il y a donc eu ajout de ";" par Excel sur toutes les lignes qui avaient
moins de champs que celle qui en a le plus.
Ici, mes 2 dernières lignes ont 9 champs (8 séparateurs ";"). Les autres
en
ont juste 3 (2 séparateurs ";"). Excel a donc ajouté 8-2=6 séparateurs sur
ces lignes.

Cela est génant pour l'utilisation que je souhaite faire ensuite de ce
fichier, car il ne sera plus accepté par le logiciel qui devra le
traiter...

Existe-t'il un moyen d'éditer sous Excel un fichier CSV en interprétant
les
séparateurs pour mettre les données en colonne, puis de sauvegarder ce
fichier depuis Excel pour le remettre en CSV, mais avec le même nombre de
";"
sur chaque ligne ?

Note : l'exemple ci-dessus est évidemment un simple exemple pour illustrer
mon problème.
Mon besoin est d'ouvrir par macro le fichier CSV original sous forme de
colonnes afin de le modifier automatiquement par macro (suppression de
lignes
selon un critère), puis enregistré le fichier ainsi modifié en CSV.

J'ai essayé lors de la sauvegarde par macro (fonction
"Workbooks(id).SaveAs") différents formats "xlCSV", "xlCSVMSDOS, ou
"xlCSVWindows" mais cela ne change rien...

Merci par avance pour vos précieuses réponses.

A bientôt !


Avatar
Antoine
En fait, mes fichiers CSV sont déjà formés par un logiciel.

Les lignes contenues dans ce CSV n'ont pas toutes le même nombre de champs
car ce sont des blocs de données avec des significations différentes.

Voici un exemple peut être plus parlant, avec un premier bloc de 3
paramètres et un second de 6 paramètres :
"
#Begin
#Titre_du_bloc_1;Nom_Param_1_1;Nom_Param_1_2;Nom_Param_1_3
Titre_du_bloc_1;Valeur;Valeur;Valeur
Titre_du_bloc_1;Valeur;Valeur;Valeur
Titre_du_bloc_1;Valeur;Valeur;Valeur
#End
#Begin
#Titre_du_bloc_2;Nom_Param_2_1;Nom_Param_2_2;Nom_Param_2_3;Nom_Param_2_4;Nom_Param_2_5;Nom_Param_2_6
Titre_du_bloc_2;Valeur;Valeur;Valeur;Valeur;Valeur;Valeur
Titre_du_bloc_2;Valeur;Valeur;Valeur;Valeur;Valeur;Valeur
Titre_du_bloc_2;Valeur;Valeur;Valeur;Valeur;Valeur;Valeur
#End
"

J'espère que c'est un peu plus clair sur le contenu de mon fichier...

Ceci dit, le contenu de mon fichier ne change rien au fond du problème.

Je ne vois pas non plus comment Excel peut faire, à part regarder le nombre
de séparateurs pour chaque ligne à l'ouverture du fichier et le noter afin de
le remettre sous le meme format ensuite... mais cela m'étonnerait.

J'ai quand même voulu demander sur ce forum, on ne sait jamais, si une
option existait...

Merci tout de même pour votre réponse.
Si quelqu'un d'autre a une idée...
Avatar
Antoine
Bonjour,

Je n'ai pas trouvé la solution à mon problème tel que décrit dans mon
premier post, mais j'ai réussi à me débrouiller autrement pour arriver au
résultat que je recherchais.

J'ouvre mon fichier CSV par macro, mais sans choisir le séparateur ";" comme
délimiteur de colonnes.

Je travaille ensuite avec des fonctions de manipulation de chaines de
caractères pour récupérer les valeurs contenues dans chaque chanp au lieu
d'aller chercher directement la valeur dans la cellule.

Par exemple, avant, je testais la valeur de ma cellule "C" comme ceci :
"
If Cells(ligne,"K").Value = "TOTO" Then
blablabla
End If
"

Maintenant, je procède comme ceci :
"
modele = "*;*;TOTO;*"
If Cells(ligne,"A").Value like modele Then
blablabla
End If
"

Comme j'ai toutes mes données dans une seule colonne (colonne "A"), lorsque
je sauvegarde en CSV, je n'ai pas de ";" additionnels qui s'ajoutent... !

Je note donc mon problème comme résolu.

Merci.