Mise à jour d’une base Access par fichier CSV ou Excel – Episode 2

Passerelles Access CSV

Aujourd’hui, voici un (gros) bout de code VBA qui va nous servir à automatiser l’importation de fichiers CSV ou Excel dans une base de données Access.

Si vous avez manqué le début

Relisez l’article suivant, si vous venez d’arriver sur cette page sans frapper… 😉

Préparation de votre base

Votre base de données Access doit comporter quelques réglages pour que tout ce qui suit fonctionne :

  1. Activez la bibliothèque DAO dans le menu Outils / Références de Visual Basic Editor. Pour plus de détails, consultez cet article.
  2. Recopiez également la fonction StringFormat(), que vous trouverez sur cette page du site self-access.com. Sur la page citée, recopiez le premier bloc de code (les autres sont des exemples d’utilisation, pas utiles ici).

La classe TableUpdater

Voici le code qui va gérer l’importation d’un fichier externe (CSV ou Excel) dans une table Access. Tout ce code doit être recopié dans un module de classe. Voici comment faire :

  1. Ouvrez votre base Access.
  2. Activez l’onglet Créer du ruban.
  3. Tout à droite, cliquez sur Module de classe.
  4. Recopiez tout le bazar qui suit (!) dans le module vide obtenu.
  5. Enregistrez le module, en lui donnant le nom TableUpdater.

La classe ImportError

Pour que les erreurs d’importation soient diagnostiquées clairement, il vous faut encore une autre classe VBA. Comme plus haut :

  1. Activez l’onglet Créer du ruban.
  2. Tout à droite du ruban, cliquez sur Module de classe.
  3. Recopiez ce qui suit dans le module vide obtenu.
  4. Enregistrez le module, en lui donnant le nom ImportError.

Comment ça marche ?

Vu la longueur du code VBA ci-dessus (près de 550 lignes), je détaillerai son fonctionnement dans un prochain article. Quel suspense, non ?! 🙂

Info
Lorsque la série d’articles sera terminée, je posterai dans la section Téléchargements du blog une base de données complète reprenant tous les exemples.

Vous aimerez aussi...

4 réponses

  1. gabz dit :

    Bonjour,

    Tout d’abord merci pour l’article!
    Mais j’ai deja un petit souci…En voulant activer la bibliotheque DAO. Je coche la case MicrosoftDAO 3.6 Object Library et en cliquant sur OK la fenetre suivante s’ouvre :
    « Name conflicts with existing module, project, or object library »

    Savez vous pourquoi?

    Cordialement

  2. Aldo dit :

    Bonjour.

    Un grand bravo pour cette article

    Il serait bien d’ajouter ce code si nous voulons importer un fichier avec une version d’Excel dépassé (2003)

    « acSpreadsheetTypeExcel9 »

    Quand pensez-vous ?

    • Hervé Inisan dit :

      Merci pour le retour !

      La classe TableUpdater est réglée par défaut sur acSpreadsheetTypeExcel12, mais sa propriété ExcelVersion est modifiable. Par exemple, de cette manière :

      Il y a un exemple plus détaillé dans le 4ème article de la série.

      Je n’ai pas testé avec Excel 2003, mais l’importation devrait fonctionner également.

Laisser un commentaire

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