Erreur 76 Path not found : quel path ?

Signaler
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
-
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
-
Bonjour,
sur ce code j'ai une erreur 76 sur la ligne 15360
Private Sub Form_Load()
14590    On Error GoTo Form_Load_Error
...
15360 If Myver <> G_TempVer Then DownloadTemplates <== Error 76
...
Form_Load_Error:
16290     ErrHdl ("Form_Load dans Angles")

L'erreur ne peut pas se produire dans la sub DownloadTemplates car elle dispose de sa gestion d'erreur
Private Sub DownloadTemplates()
17180    On Error GoTo DownloadTemplates_Error
...
DownloadTemplates_Error:
17460 If Err.Number = 58 Or Err.Number = 76 Then 
17470     MsgBox "Impossible de créer le répertoire " & G_AppData & "\Templates\" & Rootitem.Name, vbExclamation, Caption
17480     fPath.DeleteFolder (G_AppData & "\Templates"), True
17490     On Error GoTo 0
17500 Else
17510     ErrHdl ("DownloadTemplates dans Angles - Folder " & G_AppData & "\Templates\" & Rootitem.Name)
17520 End If
Si l'erreur 76 se produisait dans DownloadTemplates elle serait interceptée et traitée dans cette sub.
Je ne comprends donc pas pourquoi elle se produit sur la ligne 15360.
Est-il possible de savoir de quel path il s'agit ?

2 réponses

Messages postés
2396
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
7 avril 2021
130
Bonjour
Supposes que ton erreur arrive à la ligne 17280 dans la Sub DownloadTemplates .
La code va à la gestion d'erreur en 17460 .
Le
On Error Goto 0
en 17490 bloque la gestion d'erreur sur une erreur éventuelle dans le code de DownloadTemplates()
Une fois la gestion de l'erreur à la ligne 17280 terminée le code continue à la ligne 17290 . Et si ensuite vu le chemin non trouvé cette erreur peut se reproduire dans le code entre 17290 et 174850 : là elle ne sera pas traitée .
Et c'est pour cela qu'elle est signalée en 15360 .

En cas d'erreur dans DownloadTemplates il faut gérer l'erreur et sortir de la sub DownloadTemplates en signalant l'erreur .
Au lieu de faire une sub DownloadTemplates faites une fonction qui renvoie False si il y une erreur dans DownloadTemplates et agir en conséquence après l'appel de cette fonction en cas d'erreur .
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Merci pour ta réponse,
Au lieu de faire une fonction je fais autrement
je cherche un fichier
si je ne le trouve pas j'appelle DownloadTemplates() qui télécharge les fichiers
au retour je cherche à nouveau le fichier : si je ne le trouve toujours pas je sais que DownloadTemplates() n'a pas fonctionné,
mais tu as raison, c'est plus simple de transformer la sub en fonction.

Entretemps j'ai trouvé pourquoi j'ai une erreur 76 sur la ligne 15360 :
il y a une erreur 76 dans DownloadTemplates()
elle active DownloadTemplates_Error: dans lequel il y a à nouveau une erreur 76
elle n'active pas à nouveau DownloadTemplates_Error: sinon ça bouclerait, elle est seulement révélée quand on revient dans Form_Load() donc sur la ligne 15360.

En pratique le fait qu'il y ait une seconde erreur 76 importe peu, je dois l'ignorer avec
On Error Resume Next
en prenant soin de nettoyer l'erreur avant.