XL 2019 Renommer en masse les titres de colonne des .CSV

Amilo

XLDnaute Accro
Bonjour le forum,

J'ai un dossier "CSV Test" contenant 2 sous-dossiers "2021" et "2022".
Dans chaque sous-dossier se trouvent des dossiers mensuels "01", "02", "03"...dans lequel j'ai un fichier au format .csv

J'aimerais svp remplacer dans tous les fichiers sources, les 5 titres des colonnes :

Par exemple : Mois,Lieu,Article,Quantités,Montant,Code par Date,Ville,Marchandise,Quantités,Vente,Référence

En vous remerciant par avance

Cordialement
 

Pièces jointes

  • CSV Test.zip
    3.4 KB · Affichages: 7

Amilo

XLDnaute Accro
a ben c'est sur si vous choisissez le zip pour folder on va avoir un problème de récursivité
et pour cause (et c'est normal) on se retrouve dès le 2d avec un "fich" avec deux fois le debut de l'adresse du fichier
si vous voulez garrder le dossier dans le zip dans les ressources j'ai placé une fonction dir récursive dans les fichiers zip
Merci patricktoulon,
Pour information, j'avais testé avec votre code du message #21,
Je testerai également pour le fun, l'autre méthode en gardant le fichier dans le même dossier.

Merci encore

Cordialement
 

patricktoulon

XLDnaute Barbatruc
hah................. si c'est que ca .......
alors on met une simple condition sur l'extention".csv" c'est tout
l'erreur est du au fait que tu stream le fichier lui meme si il est dans le dossier maître
et voila c'est du rapido bon boulot
VB:
Function replaceAllCsvHeader(Dossier)
    Dim FsO As Object, fich, x&, subdossier, contenu As String

    Set FsO = CreateObject("Scripting.FileSystemObject")
    Set Dossier = FsO.GetFolder(Dossier)
    For Each fich In Dossier.Files

        If LCase(Right(fich, 4)) = ".csv" Then
            'lecture
            With CreateObject("ADODB.Stream")
                .Charset = "utf-8": .Open: .LoadFromFile (fich): contenu = .ReadText()
            End With

            'ecriture
            With CreateObject("ADODB.Stream")
                .Type = 2: .Charset = "utf-8": .Open: .WriteText Replace(contenu, oldChaine, NewChaine)
                .SaveToFile fich, 2
            End With
        End If
    Next
    For Each subdossier In Dossier.subfolders
        replaceAllCsvHeader subdossier.Path
    Next subdossier
    Set FsO = Nothing

End Function
maintenant tu peux laisser ton fichier Excel dans le dossier
j'ai testé cheez moi en multipliant encore plus les dossiers et sous dossiers
500 fichier au total
ben moins d'une seconde pour faire les 500 fichiers
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin