Arreter une procedure

Résolu
cs_matth72 Messages postés 71 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 8 décembre 2011 - 24 avril 2008 à 09:52
cs_matth72 Messages postés 71 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 8 décembre 2011 - 25 avril 2008 à 09:29
bonjour à tous je suis nouveau dans  le monde des macros vb je suis actuellement en stage et ma mission et de créer un logiciel avec solidworks de façon à générer automatiquement des segments de pistons de voiture, mobylette, aviation ....
puis par la suite faire automatiquement la mise en plan, actuellement tout sa fonctionne très bien, je suis dans la phase de suppréssion des erreurs.
Pour éviter des sub trop grandes je les sépare de façon à en créer plusieurs

Mon problème c’est que j’ai une sub principale et une sub erreur

Ma sub principale appelle ma sub erreur si pas d’erreur on continue sur la sub principale

Mais si erreur je que la sub principale soit arrêtée  
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 

Voila la structure sans toutes les lignes de programme (environ 8500 lignes)

J’ai utilisé exit sub dans la sub erreur mais l’exécution continue dans la sub principale

 

Sub erreur

‘Instruction

End sub

 

Sub Principale

Call erreur

End sub

 

Voila j’espère avoir été assez clair merci

7 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 avril 2008 à 11:05
Salut,
Essaie de passer par une Fonction

Fait un truc du style
Function erreur() As Boolean

'Instruction
'Quand erruer memorise
erreur = True
End Function<hr />

Sub Principale()

If erreur Then Exit Sub

End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 avril 2008 à 15:41
Salut

Oui elle s'execute deux fois

Private Sub principale()
Call Erreur '=> Une premiere fois ici
If Erreur = True Then Exit Sub 'et une seconde ici
End Sub

Regarde ma Sub Principale j'avais simplement mis

Sub Principale()

If erreur Then Exit Sub 'ainsi elle ne sera executer qu'UNE fois

End Sub

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 avril 2008 à 18:01
Re,
Mais je te l'ai expliquer Il te faut que ta Sub Principale soit

Private Sub principale
If Erreur Then Exit Sub
End If

TU N A PAS BESOIN DE METTRE CALL Erreur

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_matth72 Messages postés 71 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 8 décembre 2011
24 avril 2008 à 14:11
merci sa fonctionne trés bien mais il y a un petit probleme car la fonction s'exécute 2 fois de suite et puis elle s'arrète , je ne comprends pas se qu'il se passe
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_matth72 Messages postés 71 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 8 décembre 2011
24 avril 2008 à 14:26
j'ai oubler de vous mettre mon programme 

Function Erreur() As Boolean



If ComboBox1.ListIndex = 1 Then
For i = 1 To 3 'je controle 3 textbox pour savoir si elles sont pas vides
    If  Me.Controls("Textbox" & i) = "" Then
       MsgBox "Le textbox: textbox" & i & " est vide", vbExclamation, "ERREUR" ' si elles sont vides msg d'erreur
si il y a une erreur je veux que sa stop la sub principale
       Exit Function
    End If
Next
Erreur = True
End If
End function

Private Sub principale()
Call Erreur
If Erreur = True Then Exit Sub

voila ou j'en suis si sa peut aider merci d'avance
0
cs_matth72 Messages postés 71 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 8 décembre 2011
24 avril 2008 à 17:42
merci jrivet d'avoir repondu
je désoler de te contre dire mais meme en mettant If erreur  ma sub s'exécute 2 fois
je t fais un copier/coller exacte de mon prog.

Function Erreur() As Boolean
If ComboBox1.ListIndex = 1 Then
For i = 1 To 3
    If Me.Controls("Textbox" & i) = "" Then
       MsgBox "Le textbox: textbox" & i & " est vide", vbExclamation, "ERREUR"
       Erreur = True
       Exit Function
    End If
Next
End If
End Function
-------------------------------------
Private Sub principale
Call Erreur
If Erreur Then
Exit Sub
End If
meme comme sa il fait 2 fois la boucle voila merci
a+
0
cs_matth72 Messages postés 71 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 8 décembre 2011
25 avril 2008 à 09:29
Salut désolé je n'avais pas compris mais c bon j'ai fais la modification sa fonctionne nickel je te remercie du coup de main merci a bientôt <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
0