Call macro et exit sub

luciol8 Messages postés 10 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 6 juin 2011 - 9 déc. 2010 à 09:44
luciol8 Messages postés 10 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 6 juin 2011 - 14 déc. 2010 à 10:04
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

houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
9 déc. 2010 à 12:43
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
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
9 déc. 2010 à 12:53
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
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
9 déc. 2010 à 14:40
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
0
luciol8 Messages postés 10 Date d'inscription dimanche 21 novembre 2010 Statut Membre Dernière intervention 6 juin 2011 1
14 déc. 2010 à 10:04
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.
0
Rejoignez-nous