Execution automatique d'un module

diabolo5495 Messages postés 119 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

Voici mon soucis : j'ai trois modules contenant beaucoup de macro codée en VBA. J'aimerais que ces macros s'exécutent automatiquement. Est-il donc possible de faire exécuter simplement les modules eux mêmes et si oui comment ? Sinon comment faire pour que les macros s'exécutent automatiquement ??

Cordialement

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Pour qu'une macro s'exécute automatiquement (on est bien dans excel???), il faut choisir l'événement déclencheur.
    Cela peut être beaucoup de choses comme, par exemple :
    - un changement de feuille,
    - à l'ouverture du classeur,
    - au changement de valeur dans une cellule,
    - avant un double-clic
    etc.

    0
    1. diabolo5495 Messages postés 119 Statut Membre 27
       
      Et bien disons à l'ouverture du classeur et en cas de changement ou de complet du tableau !
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Exemple : à l'ouverture du classeur déclencher la procédure (Sub) nommé "MessageAlOuverture"

    Sub MessageAlOuverture()
    MsgBox "Coucou"
    End Sub 


    Dans le module ThisWorkbook (accessible par un double-clic sur "ThisWorkbook" dans la fenêtre VBA-Project (en haut à gauche de l'éditeur VBA), insérer ce code :
    Private Sub Workbook_Open()
    Call MessageAlOuverture
    End Sub
    0
    1. diabolo5495 Messages postés 119 Statut Membre 27
       
      Merci beaucoup et juste si je veux en faire plusieurs j'ai juste à écrire comme ceci ?

      Private Sub Workbook_Open()
      Call MessageAlOuverture, MessageAlFermeture, etc
      End Sub
      0
    2. diabolo5495 Messages postés 119 Statut Membre 27
       
      Est ce normal qu'il me déclare "nom ambigu détecté" ?
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      nom ambigu détecté signifie que tu as deux procédures qui portent le même nom.
      Tu n'avais pas, par hasard, déjà une procédure Workbook_Open()??

      Et non, tu les écris les unes en dessous des autres, dans l'ordre de leur exécution :

      Private Sub Workbook_Open()
      Call MessageAlOuverture
      Call SupprimeFeuilles
      Call CreationFichier
      Call BoucleFichiers
      End Sub


      Par contre, la procédure MessageAlaFermeture devra faire partie d'un autre événement :
      par exemple :
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Call MessageAlaFermeture
      End Sub


      Liens intéressants :
      Les événements dans la feuille de calcul :
      https://silkyroad.developpez.com/VBA/EvenementsFeuille/

      Les événements Workbook :
      https://www.excel-pratique.com/fr/vba/evenements_classeur.php
      0