VBA Excel : .Find qui fonctionne dans un cas et pas l'autre
Résolu
mikel831
Messages postés
188
Date d'inscription
mardi 23 octobre 2012
Statut
Membre
Dernière intervention
16 novembre 2024
-
Modifié le 25 avril 2024 à 12:29
yg_be Messages postés 23333 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 28 avril 2024 à 10:18
yg_be Messages postés 23333 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 28 avril 2024 à 10:18
A voir également:
- VBA Excel : .Find qui fonctionne dans un cas et pas l'autre
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
1 réponse
yg_be
Messages postés
23333
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
25 avril 2024 à 17:22
25 avril 2024 à 17:22
bonjour,
Rien ne prouve que Worksheets(2) et Sheets("Feuil2") correspondent au même objet.
Modifié le 25 avril 2024 à 18:32
Merci pour ta réponse!
Effectivement, en recherchant, j'ai compris la différence:
Worksheet(2)
est une référence par index, alors queSheets("Feuil2")
est une référence par nom.Si je remplace par Worksheets("Feuil2"), ça passe ....
Pour mon exemple, Feuil2 contient quatre cellules qui correspondent au texte recherché . Le code trouve bien ces quatre adresses situées dans la zone en C230 (la 1ère), C234, C236, C238 (la dernière) mais il redonne en dernier C230 ???
26 avril 2024 à 10:49
Pourquoi fais-tu le test "c.Address <> firstAddress", si tu ne t'attends pas à ce que cela continue à boucler et donne à nouveau le premier résultat?
Le code que tu as partagé ne "donne" rien et ne fait rien sur les cellules trouvées.
26 avril 2024 à 10:52
As-tu bien lu la remarque concernant ce que fait la recherche quand elle atteint la fin de la plage de recherche spécifiée?
26 avril 2024 à 17:03
Comme indiqué dans mon message d'origine, le but de ce bout de code Test est de localiser l'adresse des cellules d'une plage contenant un texte donné.
J'ai finalement abandonné les .Find et .FindNext pour revenir à une technique basique simple et efficace: analyser cellule par cellule avec une classique boucle FOR...Next : ça fonctionne comme je le souhaite et sur quelques centaines de cellules, ça ne plombe pas le temps d'exécution.
Merci pour ton aide. Cordialement, Mikel
26 avril 2024 à 21:30
C'est une bonne idée d'éviter Find() et Findnext() tant que tu ne les comprends pas.