Find ne donne pas la bonne ligne

Signaler
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
12 avril 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonsoir à tous,
Un truc que je ne pige pas:
Je recherche dans une plage une chaine( en l'occurence "Cent1" répétée sur les 100 1ere lignes), find me renvoie la ligne 2??
j'ai vérifié que mes cellules sont identiques, j'ai essayé avec columns(1) Pareil!
rechercheA = Range(Cells(1, 1), Cells(2826, 1)).Find("Cent" & b).Row

Une lumière, merci

8 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
Essaye avec une syntaxe propre :
.Find("Cent" & CStr(b)).Row
car la concaténation de chiffres aux chaines formattent d'office en laissant un espace (pour l'éventuel signe) devant le chiffre.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
12 avril 2013

Merci pour la réponse
Mais c'est toujours pareil. Je ne comprend pas, tout fonctionne bien pour les autres cellules suivantes. Si j'insere une ligne vide au départ il me revoie toujours 2, mais là c'est correct. On dirait que find demarre à la suite de la 1ere cellule
rechercheA = Range(Cells(2, 1), Cells(2826, 1)).Find("Cent" & CStr(b)).Row
me donne 3!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Comme on "voit" fort bien ce qu'est exactement b et comment une valeur lui est attribuée....
=>> j'aurais personnellement tendance à te répondre ceci : renseigne-nous avec précision (nécessaire) et tu auras une chance de recevoir une réponse précise (c'est ici évident).



____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
12 avril 2013

voila pour mieux voir
rechercheA = Range(Cells(1, 1), Cells(2826, 1)).Find("Cent1").Row

et dans toutes les cellules : Cent1
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et quel est le résultat ?
Il n'est pas celui de la 1èere ligne de la colonne 1 contenant "Cent1" ? (en respectant la casse C majuscule et le reste en minuscules) ?
Si oui : que reproches-tu alors ?
si non : joins donc un exemple


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
12 avril 2013

Le résultat est que find me renvoi la ligne 2
rechercheA = Range(Cells(2, 1), Cells(2826, 1)).Find("Cent1").Row
me renvoi la ligne 3
rechercheA = Range(Cells(3, 1), Cells(2826, 1)).Find("Cent1").Row
me renvoi la ligne 4 etc.. et comme je dois faire un offset sur la cellule de droite le résultat des recherches est faux.
et si je fais une recherche
rechercheA = Range(Cells(1, 1), Cells(2826, 1)).Find("Cent2").Row
sur:
Cent2 <<< 1ere ligne
Cent1
Cent1
Cent2
find me renvoi 4
Messages postés
81
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
12 avril 2013

Bon j'abandonne, Find pas top
Si je limite la recherche à la seule cellule(1,1) il me trouve bien la ligne 1
Je passe par une boucle qui fonctionne sans probleme
Merci à ceux qui m'on consacré du temps
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
expression.Find(Quoi, Après, RechercherDans, Regarder, OrdreRecherche, SensRecherche
, RespecterCasse, RespecterNbreOctets, FormatRecherche)


utilise le paramètre mis ici en rouge (force la main)
utilise Range("A1:A2826") plutôt quer Range(Cells(1, 1), Cells(2826, 1)).


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.