Fichier en CSV - convertir données avec macro

Julien99 -  
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

2 réponses

  1. Info
     
    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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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