Export CSV personnalisé

Access peut exporter les données d’une table ou d’une requête au format CSV, la méthode a d’ailleurs été présentée dans cet article du blog : Exporter une table ou une requête au format CSV.

Mais tout n’est pas personnalisable dans la méthode standard d’Access. D’où l’idée d’écrire une version plus ouverte en Visual Basic. C’est partiiii !

Le principe

Dans cet article, on va surtout poser les bases pour la suite, à savoir les classes VBA utiles. Pour structurer le code, nous aurons :

  • Une classe CSVField qui permettra de décrire un champ CSV à exporter. En gros : son nom, son format éventuel, son titre (tout ça deviendra plus clair dans les exemples à venir !).
  • Une classe CSVExport – utilisant elle-même CSVField – qui servira de moteur d’exportation proprement dit.

Quelques préparatifs

La classe CSVExport peut éventuellement nettoyer les liens hypertexte lors de l’exportation (ce sera illustré plus tard). Pour cela, elle utilise la fonction GetHyperlink() traitée dans un autre article du Grenier. Reportez-vous à cet article (Nettoyer des liens hypertexte à la volée), et recopiez le code qui s’y trouve dans un module standard.

La classe CSVField

Maintenant que tout est en place :

  1. Créez un module de classe dans VBE (menu Insertion / Module de classe). Attention : il s’agit bien cette fois d’un module de classe, pas d’un module standard !
  2. Recopiez-y tout ça :

La classe CSVExport

  1. Créez un deuxième module de classe.
  2. Recopiez-y tout ça :

Un petit Débogage / Compiler, pour vérifier que tout est ok.

On verra dans les prochains articles comment exploiter ces 2 classes pour obtenir une exportation CSV un peu personnalisée… Quel suspense ! 🙂

 

Vous aimerez aussi...

5 réponses

  1. Hervé Inisan dit :

    Franck > Content que ça marche ! 🙂

  2. Franck dit :

    Re,

    merci de ne pas tenir compte de mon précédent message, je viens de lire l’étape 6…

    ++
    Franck

  3. Franck dit :

    Merci pour l’aide.
    Par contre avec exportCSV, lorsque je prends comme source uns requête,
    Ce.Source = « S14_REQ »
    Elle n’est pas retoruvée, je tombe en erreur ici :
    Dim strTable As String
    strTable = CurrentDb.TableDefs(Me.Source).Name
    If Err.Number <> 0 Then
    MsgBox « La table et/ou requête ‘ » & Me.Source & « ‘ est introuvable ! », vbExclamation

    avec une table ne source, c’est OK.
    je précise que la requête s’ouvre bien en directe.

    merci de votre aide.

  4. Hervé Inisan dit :

    emi12 > Pour HyperlinkPrefix, il faut effectivement reprendre le code d’un article précédent (voir le paragraphe « Quelques préparatifs »). Pour ExportField, il faut que la référence DAO soit également cochée (c’est le cas par défaut sur les versions récentes d’Access, mais au cas où, consulte cet article).

  5. erni12 dit :

    Bonjour,

    Merci pour cette article!!

    Lorsque je copie/colle/compile les Classes si dessus, le compilateur me donne des erreurs sur la déclaration : Private m_enmCleanHyperlink As HyperlinkPrefix pour la classe CSVField et Private Function ExportField(rst As DAO.Recordset, fld As CSVField, intIndex As Integer) sur la deuxième.

    Est-ce qu’il y a une classe ou autre à intégrer au projet Access pour utilise ce code? ou non?

    Merci de votre réponse

    Salutations

Laisser un commentaire

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