Stopper une macro dans le module 1 depuis un module 2

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
 

david84

XLDnaute Barbatruc
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+
 

Garion

XLDnaute Nouveau
Re : Stopper une macro dans le module 1 depuis un module 2

Merci pour ton aide david.

Sur ton conseil, j'ai réussi à appliquer cette méthode dans un fichier exemple que je joins.

Merci pour ton aide et peut-être à bientôt.
 

Pièces jointes

  • doc1.xls
    51 KB · Affichages: 55
  • doc1.xls
    51 KB · Affichages: 58
  • doc1.xls
    51 KB · Affichages: 61

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote