Fichier en CSV - convertir données avec macro
Julien99
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je dois updater des fichiers tous les jours, et pour cela, je dois les convertir puisqu'ils sont en CSV.
Existe-t'il une formule en VBA pour selectionner la premiere colonne (A) qui contient toutes les données réunies, ensuite faire "convertir", et enfin "mettre des virgules" pour répartir les données sur les différentes colonnes?
Merci beaucoup,
Jul
Je dois updater des fichiers tous les jours, et pour cela, je dois les convertir puisqu'ils sont en CSV.
Existe-t'il une formule en VBA pour selectionner la premiere colonne (A) qui contient toutes les données réunies, ensuite faire "convertir", et enfin "mettre des virgules" pour répartir les données sur les différentes colonnes?
Merci beaucoup,
Jul
2 réponses
-
Bonjour,
Si je comprends bien vous avez des fichiers de types [.csv] avec des point-virgult [ ; ] qui
sépare les données. Vous voulez transformer le [ ; ] par une virgule dans le fichier [ .CSV ].
Si j'ai bien compris, utiliser le code suivant pour modifier les fichiers [ .CSV ] visé.
Option Explicit Const ForReading = 1, ForWriting = 2 Sub TransformerFichier() Dim objFSO As Object, objFichier As Object Dim Dossier As Variant, Ligne As Long, Boucle As Long Dim strTexte As String, strRetour As String, Boite() As String Dim Longueur As Long, Compteur As Long Set objFSO = CreateObject("Scripting.FileSystemObject") ' Adapter le lecteur ChDrive "C" ' Adapter le chemin d'accès ChDir "C:\Document\Work" Dossier = Dir("*.csv") While Dossier <> "" Set objFichier = objFSO.OpenTextFile(Dossier, ForReading) Compteur = 1 While Not objFichier.AtEndOfStream strTexte = objFichier.ReadLine Longueur = Len(strTexte) For Boucle = 1 To Longueur If (Mid(strTexte, Boucle, 1) = ";") Then strRetour = strRetour & "," Else strRetour = strRetour & Mid(strTexte, Boucle, 1) End If Next Boucle ReDim Preserve Boite(Compteur) Boite(Compteur - 1) = strRetour strRetour = "" Compteur = (Compteur + 1) Wend objFichier.Close Set objFichier = objFSO.CreateTextFile(Dossier, ForWriting) For Boucle = 0 To (UBound(Boite()) - 1) objFichier.WriteLine Boite(Boucle) Next Boucle objFichier.Close Dossier = Dir() Wend MsgBox "Traitement terminé." End Sub
Info -
Bonjour,
je dois les convertir puisqu'ils sont en CSV Oui d'accord mais les convertir en quoi? En dollars, en fichiers excel, en autre format ou avec un autre délimiteur comme le propose info?
Pour le cas ou vous souhaiteriez les transformer en .xls et que vous ne disposiez pas d'excel 2007, je vous propose ceci :
https://www.commentcamarche.net/faq/16109-excel-convertir-fichier-s-csv-xls
cordialement,