Réparation fichier csv

Fredpack Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Fredpack Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
fredpack
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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