Execution automatique d'un module

diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 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

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
Et bien disons à l'ouverture du classeur et en cas de changement ou de complet du tableau !
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   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
diabolo5495 Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   27
 
Est ce normal qu'il me déclare "nom ambigu détecté" ?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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