VBA EXCEL - Question On Error Goto
Fermé
Virginie
-
Modifié par pijaku le 24/04/2014 à 16:17
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 avril 2014 à 14:30
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 avril 2014 à 14:30
A voir également:
- On error go next vba
- 35 go internet équivalent en heure - Forum Mobile
- 32 gb en go ✓ - Forum Windows
- 128 gb en go ✓ - Forum Matériel & Système
- Mb en go ✓ - Forum Mail
- 1gb en go ✓ - Forum Windows
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 24/04/2014 à 16:21
Modifié par pijaku le 24/04/2014 à 16:21
Bonjour,
Je n'ai pas testé ton code, mais le fait que On Error ne semble pas fonctionner me semble dû à une erreur de syntaxe.
Essaie en remplaçant :
Pour info, j'ai juste supprimé les parenthèses autour de "\" et remplacé ton + NomFichier par & NomFichier.
Nota : vérifier que la variable Fichier est correctement déclarée.
Cordialement,
Franck
Je n'ai pas testé ton code, mais le fait que On Error ne semble pas fonctionner me semble dû à une erreur de syntaxe.
Essaie en remplaçant :
If check = ("\") Then Workbooks.Open (Fichier) Else Workbooks.Open (chemin & "\" + NomFichier)par :
If check = "\" Then Workbooks.Open (Fichier) Else Workbooks.Open (chemin & "\" & NomFichier)
Pour info, j'ai juste supprimé les parenthèses autour de "\" et remplacé ton + NomFichier par & NomFichier.
Nota : vérifier que la variable Fichier est correctement déclarée.
Cordialement,
Franck
Hello, merci pour ta réponse et pour la simplification de mon code.
En revanche, mon code fonctionne parfaitement, c'est simplement que si les contenus de mes variables Fichier ou Chemin & NomFichier sont chargées avec une erreur (un nom de fichier erroné ou qui n'existe pas par exemple) j'ai une erreur VBA 1004 (fichier introuvable). Théoriquement, avec mon On Error Go To, je ne devrais pas avoir de message système d'erreur et mon code devrait aller directement à mon label "message"...
alors pourquoi mon on error goto n'est pas pris en compte ?
merci de vos avis !
En revanche, mon code fonctionne parfaitement, c'est simplement que si les contenus de mes variables Fichier ou Chemin & NomFichier sont chargées avec une erreur (un nom de fichier erroné ou qui n'existe pas par exemple) j'ai une erreur VBA 1004 (fichier introuvable). Théoriquement, avec mon On Error Go To, je ne devrais pas avoir de message système d'erreur et mon code devrait aller directement à mon label "message"...
alors pourquoi mon on error goto n'est pas pris en compte ?
merci de vos avis !
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 25/04/2014 à 09:45
Modifié par Polux31 le 25/04/2014 à 09:45
Bonjour, salut pijaku.
Il faut intercepter l'erreur avec
Il faut enlever le
En fin de procédure (juste avant le End Sub) il faut mettre:
;0)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Il faut intercepter l'erreur avec
On Error Resume Next, ainsi le message d'erreur n'apparaîtra plus.
Il faut enlever le
On Error GoToet mettre en début de procédure
On Error Resume Next
En fin de procédure (juste avant le End Sub) il faut mettre:
If Err <> 0 Then MsgBox "Fichier introuvable. Vérifiez le chemin d'accès et / ou le nom du fichier" End If
;0)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
25 avril 2014 à 14:12
25 avril 2014 à 14:12
Salut Polux31,
En enlevant simplement le On Error Goto 0, cela semble fonctionner avec le code donné.
Exemple de test :
Si Classeur2.xls n'existe pas, j'ai bien le message "message:" qui s'affiche et pas d'errur 1004...
En enlevant simplement le On Error Goto 0, cela semble fonctionner avec le code donné.
Exemple de test :
Option Explicit Sub test() Dim fichier As String, NomFichier As String, chemin As String, check As String fichier = ThisWorkbook.Path & "\" & "Classeur2.xls" NomFichier = "Classeur2.xls" chemin = ThisWorkbook.Path check = ":" 'ou bien : 'check = "\" On Error GoTo message If check = ("\") Then Workbooks.Open (fichier) Else Workbooks.Open (chemin & "\" + NomFichier) message: MsgBox "Fichier introuvable. Vérifiez le chemin d'accès et / ou le nom du fichier" End Sub
Si Classeur2.xls n'existe pas, j'ai bien le message "message:" qui s'affiche et pas d'errur 1004...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
25 avril 2014 à 14:30
25 avril 2014 à 14:30
Complément d'info :
Par contre, dans la macro proposée ci dessus, le souci vient de la double utilisation de On Error GoTo machin, ou et surtout car la première erreur n'est pas traitée...
Dans ce cas, il convient, effectivement d'utiliser Resume (et non pas On Error resume Next, ni On Error GoTo truc) comme ceci :
Par contre, dans la macro proposée ci dessus, le souci vient de la double utilisation de On Error GoTo machin, ou et surtout car la première erreur n'est pas traitée...
Dans ce cas, il convient, effectivement d'utiliser Resume (et non pas On Error resume Next, ni On Error GoTo truc) comme ceci :
estouvert = False On Error GoTo ouvre Workbooks(NomFichier).Activate estouvert = True ouvre: 'Si une erreur a renvoyé à l'étiquette ouvre, 'alors "Resume ouvre" termine la gestion de cette erreur If Err <> 0 Then Resume ouvre 'Ne pas oublier le test If Err <> 0 pour éviter le bug de Resume sans erreur... If estouvert = False Then Windows(Dashboard).Activate Worksheets("Gestion").Activate check = Right(chemin, 1) End If On Error GoTo message If check = ("\") Then Workbooks.Open (Fichier) Else Workbooks.Open (chemin & "\" + NomFichier) message: MsgBox "Fichier introuvable. Vérifiez le chemin d'accès et / ou le nom du fichier" 'rétablit la gestion des erreurs par VBA pour la suite de la procédure On Error GoTo 0