Réparation fichier csv

Fermé
Fredpack Messages postés 3 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 13 mai 2019 - 9 mai 2019 à 22:28
Fredpack Messages postés 3 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 13 mai 2019 - 13 mai 2019 à 21:43
Bonjour,

Je dois reconstruire un fichier CSV mal généré par l’application mère.
Des retours chariots perturbent la structure. Aussi, avant de l’ouvrir sous excel, je souhaite le préparer avec WORD en utilisant une macro en VBA
L’idée est de supprimer dans un premier temps tous les retours chariots et d’en remettre au bon endroit.
Le séparateur utilisé dans le CSV est « ; ». Une ligne a 30 colonnes.
Je souhaite donc compter le nombre de « ; » pour connaitre la fin d’une ligne et mettre un retour chariot seulement à ce moment-là.
Quelqu’un aurait la gentillesse de m’aider car je ne maitrise pas beaucoup le VBA ?

Merci

Fred
A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
10 mai 2019 à 11:58
Bonjour,

Je ne pense pas que passer par Word soit la solution. Voici un exemple avec Excel qui te compte le nombre de séparations par ligne.

https://www.cjoint.com/c/IEkj3ObMJkQ

0
Bonjour,

un grand merci pour cette démarche qui est une piste à explorer.
Ma problémtique est plus complexe et c'est pour corriger le CSV que je passe par un éditeur de texte.
En effet, dans une colonne, il y a du beaucoup de texte avec beaucoup de retour chariot. Cela génère des lignes blanches et décale les colonnes...

Je vais continuer de creuser. S'il y a d'autres idées je prends ;-)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 mai 2019 à 11:24
Dans Excel pour supprimer les lignes vides, si cela peut t'aider:

Range("a1:a65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete


@+
0
Fredpack Messages postés 3 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 13 mai 2019
13 mai 2019 à 20:30
J ai bricolé ce qui suit mais je n arrive pas à gérer la boucle avec la condition. Je compte les ";" et dans mon exemple au bout du 3ème je mets un retour chariot, count à 0 et ca continue jusque la fin du fichier.
Merci pour les solutions proposées que j ai testé et qui fonctionnent.
Mais le fichier est tellement pourri.... que je ne vois que sa reconstruction par un éditeur.
Merci
0
Fredpack Messages postés 3 Date d'inscription jeudi 9 mai 2019 Statut Membre Dernière intervention 13 mai 2019
13 mai 2019 à 21:43
Sub Compter()
Count = 0
PV$ = ";"
With ActiveDocument.Content.Find
Do While .Execute(FindText:=PV$, Format:=False, MatchCase:=False, MatchWholeWord:=True) = True
Count = Count + 1
If Count = 3 then
Selection.TypeParagraph
Count = 0
End If
Loop
End With

End Sub
0