luciol8
Messages postés10Date d'inscriptiondimanche 21 novembre 2010StatutMembreDernière intervention 6 juin 2011
-
9 déc. 2010 à 09:44
luciol8
Messages postés10Date d'inscriptiondimanche 21 novembre 2010StatutMembreDerniè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
houtas
Messages postés116Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention29 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
houtas
Messages postés116Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention29 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
luciol8
Messages postés10Date d'inscriptiondimanche 21 novembre 2010StatutMembreDernière intervention 6 juin 20111 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.