Export CSV personnalisé – Episode 2

Dans l’épisode précédent de cette série, on a « posé » le code VBA utile pour exporter des données Access au format CSV. Dans cet article, on va voir un premier exemple d’utilisation de ce code.

Le scénario

Dans cet exemple simple, je dispose d’une table Clients, avec différents types de champs : Texte, Mémo, Date/Heure, Lien hypertexte (même si ce n’est pas toujours une bonne idée, pour celui-là !).

CAPT

L’objectif est d’exporter tous les champs de cette table dans un fichier CSV qui sera placé sur mon Bureau Windows.

Le code

  1. Recopiez la procédure qui suit dans un module standard de votre base de données :

  1. Adaptez bien sûr la propriété Source (le nom d’une table ou d’une requête de la base de données), la propriété Target (le chemin complet du fichier CSV à créer).
  2. Le paramètre ExportAllFields doit valoir True si vous souhaitez exporter automatiquement tous les champs de la table. C’est un scénario simple et rapide, mais on peut vouloir faire plus détaillé (voir dans un prochain article).
Note

Malgré son nom, la propriété ExportAllFields n’exporte pas vraiment tous les champs : les champs de type Objet OLE ne sont pas pris en compte, parce qu’ils n’ont pas de sens dans un fichier CSV.

Vous pouvez maintenant cliquer dans le corps de la procédure, puis sur l’icône Exécuter Sub/UserForm en haut de votre écran (le triangle vert « Play »).

Résultat

Sur votre bureau, un fichier comme celui ci-dessous devrait apparaître. Vous pouvez l’ouvrir dans Excel ou dans un éditeur de texte quelconque (genre Notepad++ ou PSPad).

"Numéro Client";"Titre";"Nom Client";"Prénom Client";"Adresse 1";"Adresse 2";"Code Ville";"Téléphone personnel";"Téléphone mobile";"Téléphone bureau";"Email";"Site web";"Remarques";"Date de création";"Date de modification";"Archiver"
1;"Madame";"KUNTZ";"Anne";"Impasse des Jambettes";;13;"03 11 12 13 14";;"03 12 13 14 15";"mailto:anne.kuntz@orange.fr";;"";14/05/2007 12:25:40;14/05/2007 12:29:57;Vrai
2;"Mademoiselle";"DELISLE";"Marie";"Résidence les Goélettes";;12;"01 07 08 09 10";;;"mailto:marie.delisle@sfr.fr";;"";14/05/2007 12:30:34;13/07/2007 19:29:40;Faux
3;"Monsieur";"LAMARK";"Paul";"4, rue Bouchain";;1;"02 10 11 12 13";"06 70 71 72 73";;"mailto:paul.lamark@free.fr";;"";14/05/2007 13:01:19;14/05/2007 13:04:10;Faux
4;"Monsieur et Madame";"MARTIN";"Yves";"109, avenue de Galbord";;2;"05 11 12 13 14";;;"mailto:yves.martin@free.fr";;"";14/05/2007 13:04:13;14/05/2007 13:05:59;Faux
5;"Monsieur et Madame";"KELLER";"Maxime";"8, boulevard Virures";;3;;"06 80 81 82 83";;"mailto:maxime.keller@free.fr";;"";14/05/2007 13:06:02;14/05/2007 13:08:20;Faux
6;"Monsieur et Madame";"HERMAND";"Marc";"Traverse Les Barrots";;4;"04 08 09 10 11";;"04 09 10 11 12";"mailto:marc.hermand@sfr.fr";;"";14/05/2007 13:08:23;14/05/2007 14:29:09;Faux
7;"Monsieur et Madame";"EOLE";"Rémi";"9, rue du Pont";;5;"05 12 13 14 15";"06 90 91 92 93";;"mailto:remi.eole@free.fr";;"";14/05/2007 13:10:26;14/05/2007 13:37:20;Faux

Comme vous pouvez le constater, l’exportation par défaut prend un certain nombre de décisions :

  • Une première ligne d’en-tête est automatiquement ajoutée, avec les noms des champs tels qu’ils sont définis dans la table.
  • Les champs Texte (et assimilés) sont délimités par des guillemets.
  • Les champs sont eux-mêmes séparés par des point-virgules.
  • Les liens hypertextes sont « livrés bruts ».
  • Les dates sont exportées au format complet (date + heure).
  • Les champs Oui/Non (ou booléens) deviennent des Vrai ou Faux.

La plupart de ces options sont personnalisables. Cela fera l’objet d’autres articles sur le blog…

Vous aimerez aussi...

2 réponses

  1. Hervé Inisan dit :

    Sylvain74 > Pour ce qui est de l’export de requête, cet autre article de la série résout le souci. Si le problème persiste, quel est le message d’erreur affiché ?

  2. Sylvain74 dit :

    Bonjour,
    Lorsque j’essaie d’exporter le résultat d’une procédure stockée, j’ai systématiquement un message d’erreur disant que la table ou l’objet est introuvable. J’ai également essayé avec une simple table mais j’obtiens toujours ce message d’erreur.
    J’ai pourtant bien pris soins de remplacer la valeur du champ source par la mienne.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *