Arrêter l'exécution de macro sans fermer un Userform

Bonjour !

Je viens sur ce forum car je développe une application pour le travail et j'ai un problème.

J'ai créé un formulaire sur lequel un opérateur saisit des informations.

J'ai la macro 1 qui s'exécute après avoir appuyé sur un bouton.

La macro 1 appelle une macro 2 qui exécute des contrôles. En cas d'erreur sur la macro 2, il faut qu'elle arrête de s'exécuter, mais que la macro 1 s'arrête également, sans pour autant fermer le formulaire.

J'ai donc essayé "Exit sub" qui sort de la macro 2, mais la macro 1 continue de s'exécuter...

J'ai aussi tenté "End" : les macros ne s’exécutent plus et le formulaire se ferme (ce que je veux impérativement éviter).

Auriez-vous une astuce permettant de résoudre ce problème ?

Merci d'avance.

Bonjour,

Si tu as une Macro1 qui lance une Macro2, si tu as une erreur d'exécution sur la Macro2, tu passe en mode Arrêt et tout va s'arrêter, a moins de gérer les erreurs pour qu'elle ne provoquent pas d'interruption. Quand la Macro2 se termine ou qu'elle s'interrompt sur erreur gérée, Macro1 reprend la main.

Si dans le cas d'erreur, tu ne veux pas que Macro1 se poursuive, il faut placer un test à cet endroit pour que Macro1 sache si elle se poursuit ou non. Soit il y a un élément qui peut être testé pour savoir si Macro2 s'est déroulée normalement ou a été interrompue et alors tu peux tester cet élément, soit il n'y en a pas et il te faut en créer un :

Exemple : une variable booléenne niveau module, que Macro2 en cas d'erreur d'exécution, initialisera à True (non initialisée, elle renverra False, ce qui te permet de ne pas l'initialiser au départ). Macro1 à la reprise teste la valeur de cette variable, et si True s'arrête. La main revient au Userform si c'est lui qui a lancé Macro1, et si masqué durant l'exécution, Macro1 le réactive avec Show avant de s'interrompre.

Voilà un type de schéma utilisable...

Merci pour l'astuce, effectivement c'est un bon intermédiaire

Rechercher des sujets similaires à "arreter execution macro fermer userform"