pb gestion d'erreur '91' dans une boucle For

  • Initiateur de la discussion Initiateur de la discussion Jean-Phi
  • Date de début Date de début

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 !

J

Jean-Phi

Guest
Ciao le forum !!

Alors voilà la situation : dans une de mes procédures (sous Ecxcel 2000 sous PC), j'effectue une gestion de l'erreur '91' dans une boucle For qui ne marche pas très bien je l'avoue...
Je m'explique : à la première erreur, tout se passe comme il faut mais à la suivante, j'ai le message d'erreur '91' qui s'affiche.

J'ai cherché dans le forum mais rien qui puisse résoudre mon pb et les causes de l'erreur détaillées dans l'aide d'Excel ne concernent pas mon code a priori.

Alors ma question est la suivante : est-il possible de gérer une erreur à l'intérieur d'une boucle If qui elle-même se situe dans une boucle For ?
Le code simplifié figure en fin de mail.

Je vous remercie d'avance pour les réponses que vous pourrez m'apportez !

Cordialement,
Jean-Phi

PS : le code :

dim v%, k%
dim Sht1 as worksheet
dim Sht2 as woksheet

set Sht1=sheets("Feuil1")
set Sht2=sheets("Feuil2")

sub essai()

For i = 7 To f
v=0

Sht1.select

If Sht2.Cells(1,1).Value <> "" Then
v=1

If v = 0 Then
msgbox "rien à faire..."
Else
Set k = Nothing
k = 0
On Error GoTo Errorhandler
k = Sht1.Cells.Find(Sht2.Cells(i, 3).Value, , xlValues).Row '<- Au deuxième passage ICI le code plante....
End If
Errorhandler:
If Err.Number = 91 Or Err.Number = 0 Then
Else
'si c'est une autre erreur...
MsgBox "Une erreur non gérée s'est produite " & Err.Number & " " & Err.Source & " " & Err.Description
End If

end sub
 
Ciao !

Euh... Petite rectification du code présenté, je l'ai écrit un peu vite, il est plein de fautes... sorry

J'ai mis en fichier joint une version qui marche (avec l'erreur décrite précédemment...)

Merci
@+
J-Phi
 

Pièces jointes

Bonjour Jean-Phi, le Forum

chez moi, ça plante pas, excel 2002
cependant, à la lecture de ton code, je peux te dire que ta gestion d'erreurs n'a rien à faire à l'intérieur de la boucle ou elle est exécutée à chaque valeur de i et de else même sans erreur ce qui doit provoquer ton problème. Essaie plutôt ce code modifié.

A+

Sub essai()

Dim i%, v%, k%
Dim Sht1 As Worksheet
Dim Sht2 As Worksheet

Set Sht1 = Sheets("Feuil1")
Set Sht2 = Sheets("Feuil2")

On Error GoTo Errorhandler
For i = 1 To 10
v = 1
Sht1.Select
If Sht2.Cells(1, 1).Value = "" Then
v = 0
If Sht2.Cells(i, 3) = "" Then
MsgBox "rien à faire..."
Else
'Set k = Nothing
k = 0
MsgBox "i=" & i
k = Sht1.Cells.Find(Sht2.Cells(i, 3).Value, , xlValues).Row '<- Au deuxième passage ICI le code plante....
MsgBox k
Sht1.Cells(k, 4).Value = Sht2.Cells(i, 3).Value
End If
End If


Next i
On Error GoTo 0
Exit Sub
Errorhandler:
If Err.Number = 91 Or Err.Number = 0 Then
MsgBox "ok..."
Else
'si c'est une autre erreur...
MsgBox "Une erreur non gérée s'est produite " & Err.Number & " " & Err.Source & " " & Err.Description
End If
Resume Next
End Sub
 
Ciao !

Merci yeahou pour ta réponse !!

Je suis d'accord avec toi sur la position de la gestion d'erreur dans le code : j'ai fait d'autres tests aussi et ça va mieux lorsque la gestion n'est pas dans la boucle ! - ton code marche bien aussi -

@+
J-Phi
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
581
Réponses
7
Affichages
433
Réponses
5
Affichages
712
Retour