Problème avec gestion d'erreur

etoumat Messages postés 54 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 5 juillet 2007 - 9 mars 2007 à 10:45
etoumat Messages postés 54 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 5 juillet 2007 - 9 mars 2007 à 14:01
Bonjour a tous . J'ai un problème avec une gestion d'erreur. A la première erreur tous se passe bien mais à la deuxième erreur j'ai un message du type : "Erreur d'exécution '91': Variable Objet ou variable de bloc with non définie".

Voila mon code :

Public Function intr()


On Error GoTo erreur1


Dim a, b, c, d, i As Integer
Dim aa As String


a = 3
b = Sheets("72").Cells(1, 2)
c = 1
d = 8
i = 2


aa = Sheets("feuil1").Cells(i, 1)


Do Until Sheets("feuil1").Cells(i, 1) = ""
aa = Sheets("feuil1").Cells(i, 1)
Do Until Sheets("72").Cells(a, 1) = ""
    Sheets("72").Select
    Cells(c, d).Activate
    Cells.Find(what:=aa, after:=ActiveCell, LookIn:=xlValues, lookat:= _    -> l'erreur se produit ici
    xlPart, searchorder:=xlByColumns, searchdirection:=xlDown).Activate
    c = ActiveCell.Row
    d = ActiveCell.Column
   
    Range("A" & c, "J" & c).Select
    Selection.Cut
    Sheets("Ent. Sup.").Select
    Cells(b, 1).Select
    ActiveSheet.Paste
    Sheets("72").Select
    Range("A" & c, "J" & c).Select
    Selection.Delete shift:=xlUp


    b = b + 1
    Sheets("72").Cells(1, 2) = b
Loop


erreur1:
If Err.Number <> 0 Then
i = i + 1
End If
Err.Clear
Loop


Sheets("72").Select
Cells(1, 8).Select


End Function

La première fois où la propriété find ne trouve pu "what:=aa" Le code va a erreur1: et tous se passe pour le mieu mais la deuxième fois ou la propriété find ne trouve pu "what:=aa" ,qui bien évidemment n'est plus le meme que la première fois, j'ai le message d'erreur cité ci-dessu qui s'affiche. Est -ce que quelqu'un a une idée du problème ? et comment faire pour l'éviter?

Merci

4 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 mars 2007 à 11:57
Pourquoi un Loop dans la gestion d'erreur ?
Je pense que tu pourrais mettre Resume qui ramènerait à la ligne en erreur (qui ne le serait plus)

Il faudrait peut-être aussi que tu regardes la valeur de la cellule visée dans Sheets("72") lorsque ça plante. Ça pourrait peut-être te donner un début d'explication (?)

MPi
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 mars 2007 à 11:59
Sans absolument rien connaître à VBA (que je n'ai même pas) , je dirais qu'en supprimant (Selection.Delete shift:=xlUp) de haut en bas, tu te fais forcément des "croche-pieds" !


Je te conseille de commencer par la dernière ligne et de remonter, si tu ne veux pas t'en faire, de ces corche-pieds là ...
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
9 mars 2007 à 12:00
J'oubliais...
Avant ton étiquette Erreur1:
Il faut mettre Exit Function

MPi
0
etoumat Messages postés 54 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 5 juillet 2007
9 mars 2007 à 14:01
J'ai mis ma gestion d'erreur dans un loop car quand il y a erreur je veu que le programme recommence. C'est pourquoi il y a un i=i+1

De toute facon j'ai trouvé ma réponse sur le forum. Je suis désolé de ne pa avoir regardé avant.
Merci a vous tous et bon week-end
0
Rejoignez-nous