Erreur 91 méthode Find
Bonjour,
J'ai une erreur sur un "Find" mais je n'arrive absolument pas à comprendre pourquoi alors que la même méthode fonctionne deux lignes plus haut, voici mon code :
Sub test()
dim rng1, rng2 as range
dim i as integer
For i = 6 To 500
If Sheets(1).Cells(i, 10).Value Like "Takt *" Then
rng1 = Sheets(2).Range("D6:O6").Find(Sheets(1).Cells(i, 10).Value, LookIn:=xlValues).Address
If Not Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i, 3).Value, LookIn:=xlValues) Is Nothing Then
rng2 = Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i, 3).Value, LookIn:=xlValues).Address 'L'erreur se trouve ici, ce qui me montre que le find n'est pas vide et donc devrait pouvoir renvoyer une adresse
Else
rng2 = Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i - 1, 3).Value, LookIn:=xlValues).Address
End If
MsgBox (rng1 & " " & rng2) 'j'ai mis un msgbox pour vérifier que mes valeurs sont bonnes
End If
Next i
End Sub
Pour rng2 j'ai fait un if car il vérifie les valeurs dans des cellules fusionnées deux par deux (exemple cellule C6 fusionnée avec cellule C7, C8 avec C9 etc...)
Merci de votre aide !!
Le pire c'est que ce code fonctionne très bien et me renvoie les bonnes adresses... :
Sub test()
dim rng1, rng2 as range
dim i as integer
For i = 6 To 500
If Sheets(1).Cells(i, 10).Value Like "Takt *" Then
rng1 = Sheets(2).Range("D6:O6").Find(Sheets(1).Cells(i, 10).Value, LookIn:=xlValues).Address
If Not Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i, 3).Value, LookIn:=xlValues) Is Nothing Then
'rng2 = Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i, 3).Value, LookIn:=xlValues).Address
MsgBox (Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i, 3).Value, LookIn:=xlValues).Address)
Else
'rng2 = Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i - 1, 3).Value, LookIn:=xlValues).Address
MsgBox (Sheets(2).range("C7:C10").Find(Sheets(1).Cells(i-1, 3).Value, LookIn:=xlValues).Address)
End If
End If
Next i
End Sub
Bonjour,
sans rentrer dans le code :
cette écriture est à revoir :
dim rng1, rng2 as range
lors de la déclaration de variable il faut préciser le type pour chacune des variables même si l'on met cela sur une même ligne , dans le cas contraire le type de variable utilisé est variant:
dim rng1 as range, rng2 as range
pour affecter un objet ( range par exemple) il faut utiliser l'instruction Set , l'égale seul n'agit que sur la valeur :
set rng2 = Sheets(2).Range("C7:C10").Find(Sheets(1).Cells(i, 3).Value, LookIn:=xlValues)
Super, merci beaucoup c'était exactement ca !
Mes range n'étaient pas bien définis, je ne savais pas que cela fonctionnait comme ca, j'avais déjà essayé le set mais vu que je n'avais pas bien défini rng1 et rng2 cela ne fonctionnait pas.
Encore merci, bonne journée !