Export CSV personnalisé – Episode 4
Suite de la saga « Export CSV personnalisé« . Dans cet épisode, on va voir comment sélectionner les colonnes à exporter, et, éventuellement comment personnaliser les titres de ces colonnes.
Résumé des épisodes précédents
Avant de lire la suite, pensez à consulter ces articles du Grenier :
Définir les champs à exporter
Dans les exemples précédents, tous les champs de la table (sauf OLE) étaient exportés systématiquement, grâce à la propriété ExportAllFields = True
. Mais vous pouvez aussi choisir les champs à exporter, et leur ordre. Voici une méthode pour le faire rapidement :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub TestExportCSV5() ' Variables Dim ce As New CSVExport Dim fld As CSVField Dim varField As Variant Dim varFields As Variant ' Initialisations générales With ce .Source = "tbl Clients" .Target = "C:\Users\Hervé\Desktop\clients.csv" End With ' Liste des champs varFields = Array("Nom Client", "Prénom Client", "Email", "Téléphone personnel") For Each varField In varFields Set fld = New CSVField fld.Name = varField ' Ajouter le champ ce.Fields.Add fld, fld.Name Next ' Exportation If ce.Export() Then MsgBox "Exportation terminée !", vbInformation End If End Sub |
- Si vous souhaitez exporter seulement certaines colonnes, oubliez cette fois le paramètre
ExportAllFields = True
. - Les champs utiles sont listés dans le tableau
varFields
. Vous y définissez à la fois les champs à exporter et l’ordre de ces champs dans le fichier CSV. - Ensuite, une boucle crée autant d’objets
CSVField
que de champs, et ajoute ces objets à la classe principaleCSVExport
(la variablece
).
Le résultat obtenu cette fois est :
"Nom Client";"Prénom Client";"Email";"Téléphone personnel" "KUNTZ";"Anne";"mailto:anne.kuntz@orange.fr";"03 11 12 13 14" "DELISLE";"Marie";"mailto:marie.delisle@sfr.fr";"01 07 08 09 10" "LAMARK";"Paul";"mailto:paul.lamark@free.fr";"02 10 11 12 13" "MARTIN";"Yves";"mailto:yves.martin@free.fr";"05 11 12 13 14" "KELLER";"Maxime";"mailto:maxime.keller@free.fr"; "HERMAND";"Marc";"mailto:marc.hermand@sfr.fr";"04 08 09 10 11" "EOLE";"Rémi";"mailto:remi.eole@free.fr";"05 12 13 14 15"
Personnaliser les titres de colonnes
Comme vous choisissez chaque champ à exporter, vous pouvez éventuellement renommer les colonnes. Il suffit de renseigner la propriété Label
de la classe CSVField
. Exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Sub TestExportCSV6() ' Variables Dim ce As New CSVExport Dim fld As CSVField Dim varFields As Variant Dim varLabels As Variant Dim intI As Integer ' Initialisations générales With ce .Source = "tbl Clients" .Target = "C:\Users\Hervé\Desktop\clients.csv" End With ' Liste des champs varFields = Array("Nom Client", "Prénom Client", "Email", "Téléphone personnel") ' Liste des titres de colonnes varLabels = Array("Nom", "Prénom", "Email", "Téléphone") ' Définition des champs à exporter For intI = LBound(varFields) To UBound(varFields) Set fld = New CSVField fld.Name = varFields(intI) fld.Label = varLabels(intI) ' Ajouter le champ ce.Fields.Add fld, fld.Name Next ' Exportation If ce.Export() Then MsgBox "Exportation terminée !", vbInformation End If End Sub |
Résultat obtenu (notez la première ligne de titres) :
"Nom";"Prénom";"Email";"Téléphone" "KUNTZ";"Anne";"mailto:anne.kuntz@orange.fr";"03 11 12 13 14" "DELISLE";"Marie";"mailto:marie.delisle@sfr.fr";"01 07 08 09 10" "LAMARK";"Paul";"mailto:paul.lamark@free.fr";"02 10 11 12 13" "MARTIN";"Yves";"mailto:yves.martin@free.fr";"05 11 12 13 14" "KELLER";"Maxime";"mailto:maxime.keller@free.fr"; "HERMAND";"Marc";"mailto:marc.hermand@sfr.fr";"04 08 09 10 11" "EOLE";"Rémi";"mailto:remi.eole@free.fr";"05 12 13 14 15"