Piloter des macros Excel

Suite à une discussion récente sur les forums du site :
J’ai des macros dans un classeur Excel. Comment les piloter à partir d’Access ?

Dans Excel

Imaginons que vous ayez ces 2 macros dans un module de votre classeur Excel :

Exécuter une macro simple

Repassez dans Access…

  1. Démarrez Visual Basic Editor (touches ALT + F11).
  2. Commencez par établir une référence à Microsoft Excel Objects, dans le menu Outils / Références.
  3. Cliquez sur le menu Insertion / Module, puis recopiez dans le module le code suivant :

Ce bloc de code exécute la macro MessageSimple d’Excel, puis ferme le classeur Excel sans l’enregistrer. C’est la méthode Run qui permet d’exécuter une macro par son nom.

Exécuter une macro avec arguments

Si la macro Excel contient des arguments, comme la macro RenseignerCellule, le principe est le même : il suffit de fournir les paramètres à la suite de la méthode Run. Ce qui donne :

Dans ce code, j’ai rajouté une pause (par MsgBox) au niveau d’Access, avant la fermeture du classeur Excel, pour avoir le temps de vérifier que la cellule B5 de la feuille 1 contient bien la valeur « Dimanche » !

Pour tester…

  1. Vous avez construit le classeur Excel avec les 2 macros données en début d’article.
  2. Vous disposez d’une base Access avec les procédures PilotageMacro1 et PilotageMacro2.
  3. Aménagez les chemins de l’instruction Workbooks.Open (il s’agit du chemin complet vers le classeur Excel).
  4. Le classeur Excel est supposé fermé au départ.
  5. Exécutez l’une des 2 procédures Access.

Vous aimerez aussi...

2 réponses

  1. Hervé Inisan dit :

    paidge > Dans un premier temps, il faut que la procédure soit Public plutôt que Private. Sinon elle n’est pas visible de l’extérieur (y compris d’un autre module Excel). Ça fait quoi, en changeant déjà ça ?

  2. paidge dit :

    Bonjour,
    Dans un classeur Excel 2003, j’ai une private sub sur Sheet1 qui s’appelle par exemple « tutu » et qui utilise des modules de classe spécifiques au classeur. Comment je peux l’appeler depuis Access 97 ?
    J’ai essayé pas mal de solutions comme la méthode Run citée dans ton billet (xlApp.Run xlSheet.BneUploadDocument) mais sans succès 🙁 Une idée ?

Laisser un commentaire

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