Stopper procedure depuis une fonction
patgva
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 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.
A voir également:
- Stopper une fonction python
- Fonction si et - Guide
- Citizen code python avis - Accueil - Outils
- Fonction miroir - Guide
- Stopper pub youtube - Accueil - Streaming
- Fonction moyenne excel - Guide
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:
Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
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 :
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
L'erreur intervient dans la function.
Utiliser un "GO TO errohandler" puis exit function permet de quitter la fonction mais pas la procedure sub principale depuis laquelle elle est appelee.