à mon humble avis cela fonctionnera beaucoup mieux comme cela.
VB:
Set Trouve = Sheets("Feuil1").Range(Cells(1, 1), Cells(3, 1)).Find(What:="5200", LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
votre After:=ActiveCell fait planter dès que la cellule active n'est pas dans la plage de recherche, vous pouvez soit l'enlever ce qui prendra par défaut le début de la plage de recherche, soit le définir vous même au début de la plage de recherche.
Vous pouvez aussi enlever tous les paramètres que vous ne modifiez pas pour la recherche.
à mon humble avis cela fonctionnera beaucoup mieux comme cela.
VB:
Set Trouve = Sheets("Feuil1").Range(Cells(1, 1), Cells(3, 1)).Find(What:="5200", LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
votre After:=ActiveCell fait planter dès que la cellule active n'est pas dans la plage de recherche, vous pouvez soit l'enlever ce qui prendra par défaut le début de la plage de recherche, soit le définir vous même au début de la plage de recherche.
Vous pouvez aussi enlever tous les paramètres que vous ne modifiez pas pour la recherche.
Bonjour à tous,
Finalement j'ai encore un problème, si j'exécute ma macro sur une autre feuille que la Feuil1, j'ai une nouvelle erreur :
Sub Find()
Set Trouve = Sheets("Feuil1").Range(Cells(1, 1), Cells(3, 1)).Find(What:="5200", LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Z = Trouve.Row
End Sub
C'est dû à votre façon de noter les références de cellules, là vous ne précisez pas à quelle feuille se rattachent vos cells
Cela fonctionnera mieux comme cela.
VB:
With Sheets("Feuil1")
Set Trouve = .Range(.Cells(1, 1).Address, .Cells(3, 1).Address).Find(What:="5200", LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
End With
Mais personnellement, je trouve plus simple d'appeler directement la plage
Code:
Set Trouve = Sheets("Feuil1").Range("A1:A3").Find(What:="5200")
et mettez vos codes dans des balises </>, ce sera plus agréable à lire.
Merci Bernard,
ça fonctionne, je ne connaissais pas.
C'est noté pour le code en balise.
Concernant la simplification, je ne passe pas directement par A1:A3 car mon code est une boucle next avec des variables. Ici je l'ai volontairement simplifié.