Lier des tables Excel en VBA

Comment, en VBA, lier une feuille Excel à une base de données Access ?

Méthode 1 : TransferSreadSheet

En principe, la méthode la plus directe, pour lier une feuille Excel en VBA, consiste à utiliser l’instruction DoCmd.TransferSpreadSheet. Un exemple ?

Vous devez fournir dans l’ordre :

  • le type d’opération à effectuer (acLink pour lier la feuille, acExport pour exporter, acImport pour importer) ;
  • la version du classeur (voir la liste proposée) ;
  • le nom de la table (en fait, de la liaison de table) à créer ;
  • le chemin complet du classeur à lier ou importer ;
  • une valeur True si la feuille commence par une ligne de titre, False sinon ;
  • enfin la zone à lier, dans le classeur Excel (il peut s’agir d’une plage, ou d’une feuille entière – terminée dans ce cas par « !« ).

Méthode 2 : DAO

Mais Jean, sur le forum self-access.com, nous a rapporté que ça ne marchait pas sur sa machine. Une page du site de support Microsoft donnait une solution alternative, mais incomplète. Voici une version un peu améliorée…
Commencez par recopier le code qui suit dans un module standard de votre base de données :

Important
L’exemple de code ci-dessus fait appel à la bibliothèque DAO (Microsoft DAO Object Library). Cette bibliothèque doit être associée à votre base de données pour que le programme fonctionne.

Pour plus de détails sur les références, consultez cette page.

Tester

Pour tester le code :

  1. Faites apparaître la fenêtre Exécution (CTRL + G).
  2. Tapez-y par exemple :
    XLLink "tbl Test", "C:...Un fichier.xls", "Feuil1", True
    puis validez par [Entrée].

Normalement, dans la fenêtre de base de données devrait apparaître une table (une liaison de table, pour être précis) nommée tbl Test, et pointant vers votre fichier Excel.
La procédure XLLink reçoit 4 arguments :

  1. Le nom de la table – de la liaison – à créer dans la base de données.
  2. Le chemin complet du classeur Excel à lier (le fichier est supposé être en version 8.0).
  3. Le nom de la feuille Excel à lier, à l’intérieur du classeur donné en 2.
  4. Une valeur booléenne qui vaudra True si la feuille Excel contient une ligne de titres, et False sinon.
Attention
Il s’agit bien de liaison de données, et non d’importation. Ca veut dire que si vous modifiez les données dans tbl Test, les données Excel  sont modifiées également.

Vous aimerez aussi...

2 réponses

  1. Rolmaire dit :

    Oups… Dans mon commentaire sur les droits de modifications de la table Excel, il faut lire 2006 et pas 1996…

  2. Rolmaire dit :

    La modification des données Excel est devenue impossible depuis 1996, car suite à une poursuite au civil pour violation de brevet, MS n’a plus le droit d’offrir cette fonctionalité. La table Excel est donc en lecture seulement.

Laisser un commentaire

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