Fichier en CSV - convertir données avec macro

Fermé
Julien99 - 9 févr. 2011 à 19:31
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 févr. 2011 à 16:47
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


A voir également:

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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
10 févr. 2011 à 16:47
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,
0