Problème instruction On error GoTo

mulraf Messages postés 18 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 12 mai 2006 - 22 mars 2006 à 10:52
v.massip Messages postés 48 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 9 décembre 2008 - 8 déc. 2006 à 11:10
Est-il possible de placer l'instruction On error GoTo Etiquette dans une boucle For, apparement je rencontre un problème, lors du premier passage aucun soucis l'instruction me dirige vers ma routine d'erreur, par contre le tour suivant problème ?

For i = 1 To 9 Step 1
.
.
.
On Error GoTo erreur1
ActiveChart.SetSourceData Source:=Sheets(Nom_feuille).Range("A1:B" + CStr(Range(ActiveWorkbook.Names("Mots_capteur"))))
On Error GoTo 0
reprise1:

Next i

Quelqu'un connait-il ce problème ?

4 réponses

jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
22 mars 2006 à 11:54
en fait, c'est ton nom d'étiquette qui ne va pas
vérifie que ton étiquette existe bel et bien, puis que le nom est "courant"

du genre :
etiquette:
label1:
err1:
toto:
jesaispaskoiencor:

normalement, il n'y a pas de probleme pour mettre des goto dans les for

A+.
Thomas.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 mars 2006 à 20:38
pas de problème mais c'est à éviter tout de même quand on peut s'en passer.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 mars 2006 à 20:40
le mieux étant d'isoler ici ce qui risque de provoquer une erreur, et d'ajouter les tests adéquats

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
v.massip Messages postés 48 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 9 décembre 2008 2
8 déc. 2006 à 11:10
Le problème vient du fait qu'un "On Error Goto label" ne permet de gérer effectivement qu'une erreur par fonction ou procédure (si la gestion des erreurs n'est pas remise à zéro par un "Resume").

Or, dans ton code de gestion d'erreur (Label "erreur1:"), tu dois certainement utiliser un "Goto reprise1" pour revenir dans ta boucle "For". Donc, pour ta première occurence, pas de problème, mais pour la seconde, la gestion d'erreur te remonte... Une erreur!

Pour éviter cela, il faut que tu utilises un "Resume reprise1" dans ton code de gestion d'erreur.
Le resultat est le même qu'un "On Error Goto erreur1" mais il y a remise à zéro de la gestion des erreurs et donc possibilité de gérer plusieurs erreurs dans une même fonction ou procédure...

Ce qui te donnera :

For i = 1 To 9 Step 1

{...}

   On Error GoTo erreur1
      ActiveChart.SetSourceData Source:=Sheets(Nom_feuille).Range("A1:B" + CStr(Range(ActiveWorkbook.Names("Mots_capteur"))))
   On Error GoTo 0

{...}

reprise1:
   Next i

{...}

erreur1:

   {... traitement de l'erreur...}

   Resume reprise1
0
Rejoignez-nous