Stopper procedure depuis une fonction
Fermé
patgva
Messages postés
2
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
29 décembre 2014
-
29 déc. 2014 à 21:31
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 30 déc. 2014 à 11:27
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 30 déc. 2014 à 11:27
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 moyenne excel - Guide
- Stopper pub youtube - Accueil - Streaming
3 réponses
Utilisateur anonyme
29 déc. 2014 à 21:45
29 déc. 2014 à 21:45
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
Utilisateur anonyme
Modifié par Whismeril le 29/12/2014 à 22:16
Modifié par Whismeril le 29/12/2014 à 22:16
Ç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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
30 déc. 2014 à 11:27
30 déc. 2014 à 11:27
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
29 déc. 2014 à 21:53
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.