Herve_be
Messages postés1000Date d'inscriptionmercredi 4 août 2010StatutMembreDernière intervention 9 juin 2023
-
9 mars 2021 à 10:16
Herve_be
Messages postés1000Date d'inscriptionmercredi 4 août 2010StatutMembreDernière intervention 9 juin 2023
-
11 mars 2021 à 17:49
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 ?
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 11 mars 2021 à 17:15
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 .
Herve_be
Messages postés1000Date d'inscriptionmercredi 4 août 2010StatutMembreDernière intervention 9 juin 20232 Modifié le 11 mars 2021 à 17:50
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.