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

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour