Call macro et exit sub

Signaler
Messages postés
10
Date d'inscription
dimanche 21 novembre 2010
Statut
Membre
Dernière intervention
6 juin 2011
-
Messages postés
10
Date d'inscription
dimanche 21 novembre 2010
Statut
Membre
Dernière intervention
6 juin 2011
-
Bonjour,

Voici mon problème... J'ai une première macro (nommée macro1) que j'appelle dans une autre macro (nommée macro2).

Dans macro1, j'ai une condition If qui si elle n'est pas remplie me permet de sortir de la macro (exit sub). Tout marche, cependant lorsque j'exécute ma macro2 (qui appelle donc ma macro1) et que la condition n'est pas remplie, je souhaiterais sortir aussi automatiquement de cette macro et ne pas continuer le code.


Sub macro1
If XXXX then
Else
Exit sub
End sub

Sub Macro2
Call macro1 'la je voudrais aussi sortir du code si cette macro n'est pas exécutée entièrement.
...
End sub

Merci, d'avance

4 réponses

Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

Salut
au lieu de faire un exit sub utilise un goto exemple et transforme ta procédure (macro1) en fonction de type boolean, regarde cet exemple
Function macro1() As Boolean
If Day(Date) = 10 Then
test1 = True
Else
test1 = False
GoTo Fin1
End If

Fin1:
End Function
Sub macro2()
If test1 = True Then
MsgBox ("ok")
Else
GoTo Fin2
End If

Fin2:
End Sub


Si la réponse te satisfait n'oublie pas d'accepter la réponse
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
il faut éviter d'utiliser des goto ce n'est pas propre !!
à la place de
Sub macro2()
If test1 = True Then
MsgBox ("ok")
Else
GoTo Fin2
End If
Fin2:
End Sub

il faut faire:
Sub macro2()
If test1 = True Then
    MsgBox ("ok")
Else
    Exit Sub
End If
End Sub

dans le cas d'une fonction ce sera : Exit Function

si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013

Oui tu peux faire avec Exit sub et exit function
Sub macro2()
If macro1 = True Then
    MsgBox ("ok")
Else
    Exit Sub
End If
End Sub

Function macro1() As Boolean
If Day(Date) = 10 Then
macro1 = True
Else
macro1 = False
Exit Function
End If
End Function


Question pour pile_poil pourquoi la méthode Goto ne serait pas propre, peux tu développer ton explication, merci
Messages postés
10
Date d'inscription
dimanche 21 novembre 2010
Statut
Membre
Dernière intervention
6 juin 2011
1
Donc si j'ai bien compris... macro1 doit être obligatoirement une fonction et non un "sub" pour être considéré comme booléenne ?

Exemple de code car je crois que je ne me suis pas bien exprimé lors de mon premier post :

Sub verifdesignation ()
If txtB_designation = "" then
MsgBox "Renseigner une désignation"
Exit sub
End if
End sub

Sub ajouterarticle ()
call verifdesignation

... 'ensuite j'ajoute les informations dans une autre feuille

end sub

Evidement dans la macro ajouterarticle il y a plusieurs macro appelée... et je voudrais que si l'une d'entre elles ne se termine pas normalement (donc sorti via un exit sub), je sorte aussi de la cette macro "principale" et donc n'inscrive pas les données renseignée dans la dite feuille excel.