Stopper procedure depuis une fonction
patgva
Messages postés
2
Statut
Membre
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Dans une procedure vba pour Access, je fais appel a une fonction. Lorsque la fonction recontre une erreur, je voudrais pouvoir arreter la fonction mais egalement la procedure d'origine.
Il y a t il une ligne de code qui me permettrait de tout stopper sans faire apparaitre la fenetre vba?
Merci beaucoup.
Contexte: depuis Access, une procedure vba copie colle une table Access dans une nouvelle feuille Excel. Pour chacun des onglets excel, je lance une fonction qui formate les feuilles. Lorsque l'utilisateur a ferme un classeur excel peut de temps avant, une erreur 171 ou 91 apparait (une fois sur deux...). L'idee est alors de quitter la procedure et fermer le classeur quand l'erreur se presente.
Dans une procedure vba pour Access, je fais appel a une fonction. Lorsque la fonction recontre une erreur, je voudrais pouvoir arreter la fonction mais egalement la procedure d'origine.
Il y a t il une ligne de code qui me permettrait de tout stopper sans faire apparaitre la fenetre vba?
Merci beaucoup.
Contexte: depuis Access, une procedure vba copie colle une table Access dans une nouvelle feuille Excel. Pour chacun des onglets excel, je lance une fonction qui formate les feuilles. Lorsque l'utilisateur a ferme un classeur excel peut de temps avant, une erreur 171 ou 91 apparait (une fois sur deux...). L'idee est alors de quitter la procedure et fermer le classeur quand l'erreur se presente.
3 réponses
-
Bonsoir, il faut utiliser la gestion des erreurs, avec l'instruction On Error
Sub test() 'Dans cet exemple en cas d'erreur le code va dans la partie appelée GestionErreur On Error GoTo GestionErreur Dim a a = 3 / 0 Exit Sub GestionErreur: MsgBox ("Erreur trouvée") End Sub -
Ça marche aussi:
Sub test() On Error GoTo GestionErreur Dim r As Double r = Division(1, 2) MsgBox ("1 / 2 = " & r) r = Division(1, 0) MsgBox ("1 / 0 = " & r) Exit Sub GestionErreur: MsgBox ("Erreur trouvée") End Sub Function Division(a As Integer, b As Integer) As Double Division = a / b End Function
Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue. -
Bonjour le fil,
Pour cela, tu peux aussi utiliser une variable déclarée au niveau Module :
Dim Erreur As Boolean Sub test() Dim r As Double r = Division(1, 2) If Erreur = False Then 'Ici le traitement si Erreur il y a eu dans la fonction Else Goto GestionErreur End If 'blabla Exit Sub GestionErreur: MsgBox ("Erreur trouvée") End Sub Function Division(a As Integer, b As Integer) As Double Erreur = False On Error Goto TraiteErreur Division = a / b Exit Function TraiteErreur: Erreur = True End Function