Menu

Réparation fichier csv

Messages postés
3
Date d'inscription
jeudi 9 mai 2019
Statut
Membre
Dernière intervention
13 mai 2019
- - Dernière réponse : 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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
6038
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 mai 2019
364
0
Merci
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

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 ;-)
cs_Le Pivert
Messages postés
6038
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 mai 2019
364 -
Dans Excel pour supprimer les lignes vides, si cela peut t'aider:

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


@+
Fredpack
Messages postés
3
Date d'inscription
jeudi 9 mai 2019
Statut
Membre
Dernière intervention
13 mai 2019
-
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
Fredpack
Messages postés
3
Date d'inscription
jeudi 9 mai 2019
Statut
Membre
Dernière intervention
13 mai 2019
-
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
Commenter la réponse de cs_Le Pivert