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

  • Initiateur de la discussion Jean-Phi
  • Date de début
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
 
J

Jean-Phi

Guest
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

  • test_91_For.zip
    9.9 KB · Affichages: 15
Y

yeahou

Guest
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
 
J

Jean-Phi

Guest
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
 

Discussions similaires

Réponses
2
Affichages
176

Statistiques des forums

Discussions
312 501
Messages
2 089 014
Membres
104 005
dernier inscrit
Maxence