Find ne trouve pas une valeur existante

Bonjour à tous,

Problème assez simple mais je n'arrive pas à comprendre

Sub TEST()

Set truc = Sheets("Feuil1").Range("A1:A3").Find("FIXE")

End Sub

Cette simple recherche me renvoie "Nothing" alors que l'information est bien présente dans ma feuille (ci-joint un exemple)

Mes cellules contiennent FIXE mais avec une format personnalisé "F " @ qui renvoie en impression F FIXE

Rien n'y fait, je ne comprends pas pourquoi il ne veut pas trouver cette cellule

Quelqu'un aurait-il une idée ?

Merci pour votre aide

17find.xlsm (13.66 Ko)

Bonjour,

à tester,

correction:

Sub TEST2()
With Sheets("Feuil1").
Set truc = .Range("A1:A3").Find(What:="FIXE", After:=.Range("A1"), LookAt:=xlPart)
End With
MsgBox truc.Address
End Sub

Bonjour,

Ca marche !

Pourquoi cela ne fonctionne-t-il qu'au travers un with ?

Je ne comprends pas...

Merci beaucoup pour ton aide !

re,

le with n'est pas nécessaire, mais les arguments After et LookAt de la méthode Find le sont.

Sub TEST3()
Set truc = Sheets("Feuil1").Range("A1:A3").Find(What:="FIXE", After:=Sheets("Feuil1").Range("A1"), LookAt:=xlPart)
MsgBox truc.Address
End Sub

Edit:

Oublie ça ! Tout fonctionne comme je pensais,

Merci beaucoup i20100

Edit2:

By default, the Find Method wont look in hidden columns/rows. Use LookIn:=xlFormulas instead of LookIn:=xlValues to overcome this.

Si jamais quelqu'un tombe sur ce problème, cette info m'a été utile

Re,

Merci pour l'info

J'ai pourtant d'autres find qui n'ont pas le paramètre after et qui pourtant marchent très bien

Je profite de ton aide pour une autre question.

Find renvoie un objet Range. Je voulais récupérer le booléen pour savoir si ma ligne est masquée ou non

Mais il semblerait que je ne puisse pas le faire sans passer par un Range(truc.address).Entirerow.Hidden ce qui me semble abbérant

Si tu as une idée/solution simple ce serait top mais je ne veux pas te faire perdre ton temps.

Merci beaucoup pour ton aide !

re,

à tester,

Sub TEST3()
Set truc = Sheets("Feuil1").Range("A1:A3").Find(What:="FIXE", After:=Sheets("Feuil1").Range("A1"), LookAt:=xlPart)
MsgBox truc.Address
n = Sheets("Feuil1").Range(truc.Address).EntireRow.Hidden
MsgBox n
End Sub

i20100,

J'ai finalement réussi à tout faire fonctionner.

Mon problème est que je cherchais dans LookIn:=xlValues au lieu xlFormulas ce qui ne fonctionnait pas quand ma ligne était masquée (ce qui était justement l'objectif de cette recherche ) et qui ne prenait pas en compte le formatage personnalisé que j'avais appliqué sur ma cellule

Du coup quand j'ai testé ta fonction, ce qui l'a faite fonctionner c'est qu'au lieu de mettre Lootat:=XlPart j'avais mis XlWhole

Du coup en mettant XlPart cela fonctionnait avec LookIn:=XlValues mais ne fonctionnait pas sur les cellules masquées

Mais l'idéal pour moi c'était Lookat:= xlWhole, Lookin:=XlFormulas. Les autres critères sont optionnels

Cependant il vaut mieux les saisir car VBA enregistre les critères dans des variables et les réapplique au prochain Find si ils ne sont pas renseignés.

Finalement pour obtenir exactement ce que je voulais à savoir:

  • Récupérer le texte dans la barre de formule ==> XlFormulas
  • Totalité du contenu = xlWhole
  • Chercher les cellules masquées ==> XlFormulas (encore)

Merci beaucoup grâce à toi j'ai finalement mieux cerné le fonctionnement de cette fonction assez batarde !

Rechercher des sujets similaires à "find trouve pas valeur existante"