Stopper une macro dans le module 1 depuis un module 2

  • Initiateur de la discussion Initiateur de la discussion Garion
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Garion

XLDnaute Nouveau
Bonjour à tous,

J'ai actuellement une 1ère macro dans le module 1 qui me permet d'envoyer un mail et une 2ème macro dans le module 2 qui me permet d'enregistrer mon classeur avec un nom prédéfini. Bien sûr, les 2 macro sont assez longues.

Je fais appel à la 2ième macro avec le code 'Call module2.macro2 depuis le module 1.

Jusque là, ces macros fonctionnent. Mon problême est le suivant : lorsque la fenêtre "enregistre sous" apparaît, je peux toujours appuyer le bouton "annuler". Dans ce cas, le fichier n'est pas enregistrer avec le nom prédéfinie mais la macro qui me permet d'envoyer un mail s'enclenche. Je veux interdire cela et stopper l'envoi du mail. Et la, je bloque....

J'ai bien un début de code qui prend en compte l'action appuyer sur le bouton "annuler", puis exit sub mais uniquement de la macro d'enregistrement se trouvant dans le 2ième module.

Avez vous une solution pour stopper la 1ère macro dans le 1er module ?

Merci d'avance pour l'aide.

Ci-dessous un extrait de la macro d'enregistrement :


Dim objSaveBox As FileDialog

'Définit la fenêtre "Enregistrer sous"
Set objSaveBox = Application.FileDialog(msoFileDialogSaveAs)
If Application.Version < "12.0" Then
With objSaveBox
'Définit un nom par défaut dans le champ "Nom de fichier".
.InitialFileName = enregistre

'Définit le type de fichier par défaut:
'(la valeur 4 Permet de spécifier les classeurs "Excel 97-2003" lorsque vous êtes dans Excel 2007)
.FilterIndex = 4

'Affiche la boîte de dialogue
'.Show

Select Case .Show
Case -1
'procédure si click sur Sauvegarde

Case 0
'procédure si click sur Annuler
MsgBox "action annulée"
Exit Sub
End Select

'Enregistre
.Execute
End With
 
Re : Stopper une macro dans le module 1 depuis un module 2

Bonjour,
sur le principe, tu peux te servir d'une variable booléenne qui agit comme un commutateur On-Off que tu peux appeler par exemple Arret.
Tu déclares cette variable dans un module classique en Public, du type
Code:
Public Arret as Boolean
Tu peux ensuite l'utiliser dans la macro où se trouve la MsgBox et si tu cliques sur Annuler, tu places dans ton code Arret=True juste avant le Exit Sub.
Puis dans ton autre code tu vérifies l'état de ta variable : si Arret passé à True la 2ème macro sera stoppée
Code:
If Arret=True Then Arret=False:Exit Sub
Sans fichier support je ne peux tester mais je t'expose l'idée.
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
489
Réponses
3
Affichages
525
Retour