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

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Amilo,
PJ retouvée dans mes archives et adapté. A tester.
A mettre dans le dossier de tête contenant les fichiers à traiter.
1668286341696.png
 

Pièces jointes

  • Change entete csv.xlsm
    32 KB · Affichages: 2

Amilo

XLDnaute Accro
Bonjour @sylvanu ,

Merci beaucoup pour votre proposition,

La modification en masse a bien fonctionné, cependant voici le résultat que j'obtiens (avec 11 noms au lieu de 6):
Date,Ville,Marchandise,Quantités,Vente,Référence,Lieu,Article,Quantités,Montant,Code

Les noms en rouge sont de trop.

Merci d'avance


Cordialement
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir c'est bizarre car j'obtiens bien ce qui est demandé :
1668288028276.png

essayez cette PJ, j'efface la cellule A1 avant d'y mettre la chaine, au cas où ...
VB:
With ActiveWorkbook
    .Sheets(1).[A1] = ClearContents
    .Sheets(1).[A1] = "Date,Ville,Marchandise,Quantités,Vente,Référence" ' Remplace chaine en A1
    .Close SaveChanges:=True
End With
 

Pièces jointes

  • Change entete csv.xlsm
    32.1 KB · Affichages: 2

Amilo

XLDnaute Accro
Re,
@sylvanu , j'ai le même résultat que précédemment, effectivement c'est bizarre.

De plus, je viens de voir que les 6 premiers titres sont entre guillemets puis suivis des 5 autres titres :

"Date,Ville,Marchandise,Quantités,Vente,Référence",Lieu,Article,Quantités,Montant,Code

Par ailleurs, sur votre capture d'écran, il y a le séparateur "," dans la colonne des titres mais pas dans les lignes de données.
Dans mes fichiers, le séparateur est bien présent sur toutes les lignes

Cordialement
 

patricktoulon

XLDnaute Barbatruc
bonsoir @sylvanu , @Amilo

c'est par ce que vos fichier sont encodé en udf-8

du coup on triche un peu et voilà

voila sans ouvrir les fichiers

choisir le dossier maitre et puis c'est parti

chez moi moins d'une demie secondes
VB:
'Const oldChaine As String = "Mois,Lieu,Article,Quantités,Montant,Code"

Const oldChaine As String = "Mois,Lieu,Article,Quantités,Montant,Code" 'encodé udf-8

Const NewChaine As String = "Date,Ville,Marchandise,Quantités,Vente,Référence"

Sub test()
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then dossier = .SelectedItems(1)
        If dossier = "" Then Exit Sub
    End With
    replaceAllCsvHeader dossier
End Sub

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
      
        'lecture
        x = FreeFile: Open fich For Binary Access Read As #x: contenu = String(LOF(x), " "): Get #x, , contenu: Close #x
        DoEvents
         'ecriture
        x = FreeFile: Open fich For Output As #x: Print #x, Replace(contenu, oldChaine, NewChaine): Close #x

    Next
     For Each subdossier In dossier.subfolders
        replaceAllCsvHeader subdossier.Path
    Next subdossier
    Set FsO = Nothing

msgbox" Remplacement du Header dans les CSVs terminé"
End Function
 
Dernière édition:

Amilo

XLDnaute Accro
Bonjour le forum, sylvanu , patricktoulon ,

@sylvanu , je viens de tester et cela fonctionne très bien.
Juste un petit détail qui est sans aucune conséquence
Je vous joins une capture d'écran Avant et Après dans Bloc-notes de l'un des fichiers.

Au départ, nous n'avions pas de guillemets alors qu'ils apparaissent après.
Mais après test, cela ne pose aucun problème pour l'assemblage de tous les fichiers .csv dans Power query.

En tout cas, un grand merci pour votre aide et cette solution

Cordialement
 

Pièces jointes

  • Guillemets_Bloc_notes.jpg
    Guillemets_Bloc_notes.jpg
    161 KB · Affichages: 22
Dernière édition:

Amilo

XLDnaute Accro
Re-bonjour @patricktoulon ,
bonsoir @sylvanu , @Amilo

c'est par ce que vos fichier sont encodé en udf-8
Merci également pour votre réponse et cette proposition,
Question subsidiaire, on dit udf-8 ou utf-8 ?

Sinon, avant de vous indiquer l'erreur rencontrée, j'explique comment j'ai procédé pour être certain de la procédure :
- Création d'un fichier vierge en .xlsm pour coller votre code dans un module de ce fichier.
- Lancement du code au moyen d'un bouton de commande du "Contrôles de formulaire"
- Sélection du dossier du "CSV test" contenant sous les sous-dossiers puis clic OK du bouton en bas à droite de la fenêtre Windows
- Blocage sur le message d'erreur en capture d'écran ci-dessous

Je ne suis pas certain si c'est la bonne procédure !

Merci par avance

Cordialement
 

Pièces jointes

  • Message d'erreur.jpg
    Message d'erreur.jpg
    196.8 KB · Affichages: 21

Amilo

XLDnaute Accro
Merci sylvanu,
Même si c'est un détail sans importance, ça m'intéresse aussi de comprendre :),
Sinon de mon côté, je n'ai pas non plus les guillemets lorsque j'ouvre dans Excel

Edit : j'ai de nombreux fichiers .csv que j'avais téléchargés pour des exercices.
J'ai vérifié par curiosité et la plupart sont sans guillemets à l'ouverture dans Bloc-notes mais j'en ai un autre, avec des guillemets à l'intérieur de chaque séparateur.

Probablement, que cela dépend des applications générant les .csv..!

Cordialement
 

Pièces jointes

  • Autres csv.jpg
    Autres csv.jpg
    270.8 KB · Affichages: 18
Dernière édition:

patricktoulon

XLDnaute Barbatruc
les guillemet sont du au fait que ils sont encodé en utf-8 en enplus le bom a été repris
c'est se qui explique les caractères au debut de la ligne quand on le lit en binaire
autrement tes fichiers sont mal foutus
dans tout les cas ils vont te poser probleme
peut etre vaudrais il mieux les remastériser avant de les mofifier

l'erreur que tu a avec ma méthode , je sais pas c'est pas normal, ca n'a pas de sens
mais je suis pas étonné
avec quoi ils on été générés ces csv ?
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 333
Membres
103 188
dernier inscrit
evebar