Gestion des erreurs dans une boucle

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

SkyCorp

XLDnaute Junior
Bonsoir à tous,

J'ai une boucle du style :
Code:
For i = 1 To n
Set VariableA = PotentiellementQuelqueChose
[COLOR="#0000FF"]poursuite du code[/COLOR]
Next
[COLOR="#0000FF"]poursuite du code[/COLOR]

Le problème, c'est que ma ligne Set VariableA = ... peut fournir une erreur (erreur 70 dans mon cas)
Ce qu'il me faut, c'est qu'à détection de l'erreur, le code fasse certaines opérations, puis se place juste avant le Next.
J'ai en tête de mettre un On Error GoTo errorHandler juste avant ma ligne Set VariableA = ...
Mais ensuite, où placer ma balise errorHandler, ou alors, comment revenir juste avant Next ? Avec un autre GoTo ?

Merci d'avance pour votre aide
 
Re : Gestion des erreurs dans une boucle

Bonsoir SkyCorp,

Code:
For i = 1 To n
  On Error GoTo 1
  Set VariableA = PotentiellementQuelqueChose
  'suite
  GoTo 2
1 'ici le code à exécuter en cas d'erreur
  'suite
2 On Error GoTo 0
Next
Bonne fin de soirée.
 
Dernière édition:
Re : Gestion des erreurs dans une boucle

J'ai fait plusieurs tests :

Code:
For i = 1 To n
   On Error GoTo errorHandler
   Set VariableA = PotentiellementQuelqueChose
   [COLOR="#0000FF"]poursuite du code[/COLOR]
poursuiteProgramme:
Next
[COLOR="#0000FF"]poursuite du code[/COLOR]
errorHandler:
If Err.Number = 70 Then
   MsgBox "Erreur 70"
   Cells(i + 3, 1) = i
   Cells(i + 3, 2) = VarA
   Resume poursuiteProgramme
Else
   MsgBox "Une autre erreur est survenue" & vbCrLf & "Erreur #" & Err.Number & vbCrLf & Err.Description
End If
Ca fonctionne. J'ai aussi essayé avec GoTo à la place de Resume. J'ai l'impression qu'il n'y a aucune différence entre les 2, et l'exécution du programme semble le confirmer.

Autre code, qui suit ton exemple :
Code:
For i = 1 To n
   On Error GoTo 1
   Set VariableA = PotentiellementQuelqueChose
   [COLOR="#0000FF"]poursuite du code[/COLOR]
1  If Err.Number = 70 Then
   MsgBox "Erreur 70"
   Cells(i + 3, 1) = i
   Cells(i + 3, 2) = VarA
   Else
      MsgBox "Une autre erreur est survenue" & vbCrLf & "Erreur #" & Err.Number & vbCrLf & Err.Description
   End If
2  On Error GoTo 0
Next
[COLOR="#0000FF"]poursuite du code[/COLOR]
Dans ce cas, j'ai un msgbox qui s'affiche pour tous les cas valides, et qui indique Une erreur est survenue Erreur #0. Donc le programme n'évite pas la partie sur la gestion des erreurs, même si il n'y a pas d'erreur. Faudrait éviter ça.

Dans le 1er cas, est-ce optimal de gérer les erreurs comme cela, avec des allers-retours multiples ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
731
Réponses
3
Affichages
932
Retour