XL 2019 [Résolu] Problème VBA Find

  • Initiateur de la discussion Initiateur de la discussion lebarbo
  • 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 !

lebarbo

XLDnaute Occasionnel
Bonjour à tous,

Je me bats avec un code 🤯

Sub Find()
Set Trouve = Sheets("Feuil1").Range(Cells(1, 1), Cells(3, 1)).Find(What:="5200", After:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)


Z = Trouve.Row

End Sub

En changeant
Sheets("Feuil1").Range(Cells(1, 1), Cells(3, 1))
Par
Sheets("Feuil1").Cells

ça fonctionne mais je ne souhaite pas faire ça.

Le fichier est en PJ 😉

Merci d'avance,
 

Pièces jointes

Solution
Bonjour lebarbo, phil69970, le forum

à 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.

Cordialement, @+
Bonjour lebarbo, phil69970, le forum

à 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.

Cordialement, @+
 
Dernière édition:
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

Merci pour votre aide,
 

Pièces jointes

Bonjour

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.

Bien cordialement, @+
 
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é.

Bien à vous,
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
2
Affichages
423
Réponses
1
Affichages
246
Réponses
3
Affichages
510
Retour