Range.find sur pourcentage

Bonjour,

Je souhaiterais récupérer l'adresse de la cellule où apparait la première fois 100%.

J'ai utilisé le code suivant mais le range.find ne fonctionne pas.

Est ce dû au format pourcentage?

Sub DateFinRealisation()

Dim NumLigne As Long

Dim Plage As Range

Dim Cel As Range

Dim Valeur As Long

NumLigne = 1

' VALEUR RECHERCHEE '

Valeur = 1

' PLAGE DE RECHERCHE DE LA VALEUR '

Set Plage = Workbooks("WALLPAPER").Worksheets("GENERAL SOURCE").Range("B" & NumLigne & ":P" & NumLigne)

' RECHERCHE DE LA VALEUR DANS LA PLAGE '

Set Cel = Plage.Find(What:=Valeur, LookIn:=xlValues, LookAt:=xlWhole)

' SI VALEUR TROUVEE

If Not Cel Is Nothing Then

MsgBox Cel.adress

End If

End Sub

Bonjour Anthony, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim CL As Workbook
Dim O As Worksheet
Dim R As Range

Set CL = Workbooks("WALLPAPER")
Set O = CL.Worksheets("GENERAL SOURCE")
Set R = O.Rows(2).Find("100.00%", O.Range("A2"), xlValues, xlWhole)
If Not R Is Nothing Then MsgBox R.Address
End Sub

Bonjour,

Sub Test()
    Dim Cel As Range, v, n%
    v = 100: n = 2
    With Worksheets("Feuil1")
        Set Cel = .Rows(n).Find(v, , xlValues, xlPart)
        If Not Cel Is Nothing Then MsgBox .Cells(1, Cel.Column)
    End With
End Sub

Cordialement.

Merci TauThem et MFerrand,

TauTheme => J'ai essayé avec ta macro par contre il me renvoit la cellule BC2 qui ne correspond pas.

MFerrand => ta macro fonctionne bien par contre pourrais tu me l'expliquer brievement si cela ne te dérange pas afin que je l'adapte à mon fichier

En tout cas merci à vous 2 pour votre rapidité.

Bonjour,

Il me semble que c'est avec toi que j'ai déjà eu l'occasion de discuter des problèmes d'utilisation de Find lorsqu'il s'agit de valeurs formatées...

Tu lui fais chercher 1 formaté en % avec Format, elle ne le trouve pas, sans doute parce que la valeur que tu lui fais chercher est du texte... Si tu lui fais chercher 1 elle ne le trouve pas non plus (avec xlWhole), avec xlPart elle peut te trouver 10%... D'où on en vient à chercher 100 avec xlPart, et là ça répond !

Cordialement.

Re,

Regarde le code que je t'ai proposé (adapté au fichier exemple que tu as fournis), ça renvoie bien $I$2 ! Donc ça marche sur l'exemple fournis. Je teste, en principe, les solutions proposées avant de les envoyer.

15anthony-v01.xlsm (21.44 Ko)

https://forum.excel-pratique.com/excel/fonction-find-t46426.html

https://forum.excel-pratique.com/excel/fonction-vba-find-t82351.html

Nous avions déjà discuté et reconnu qu'aussi bien la fonction VBA range. find que la fonction interactive Hone/Editing/Find&Replace (ctrl-F) fonctionnent d'une manière plus que bizarre, dans les discussions ci-dessus.

La conclusion que j'ai adoptée et qui marche à merveille est d'utiliser Application.WorksheetFunction.CountIf() pour tester si une valeur apparaît dans une liste, INDÉPENDAMMENT de son format (ce qui est le besoin de la grande majorité de ceux qui veulent chercher une valeur!). Car il est probable qu'on ne sache pas le format de la cellule en temps de programmation! En plus, si on cherche une valeur, c'est qu'on n'est pas vraiment intéressé par le format...

Si on veut trouver l'adresse de la cellule qui contient la valeur alors il faudrait plutôt utiliser Application.WorksheetFunction.Match(,,0)

Pardon, mais pour moi FIND est complètement inutilisable. Je suis persuadé que MS s'est plantée en la programmant en 1991 et que maintenant ils ne peuvent plus revenir en arrière pour des raisons de compatibilité.

mais je reste ouvert à toute vision différente de la mienne.

Merci à vous tous.

J'étudie toutes vors propositions.

Re, Salut ThauThème !

"Planter" est un grand mot... Mais lorsqu'on fait le tour des fonctions et fonctionnalités d'Excel, il est clair que la même conception d'ensemble n'a pas présidé à tout... c'est le résultat du boulot d'une équipe relativement nombreuse, et de plus échelonné dans le temps au fil des versions... et tout ne s'emboîte pas à la perfection !

C'est ce qui oblige déjà à des jongleries avec les fonctions : beaucoup sont matricialisables, certaines d'usage courant non, il y en a qui acceptent concurrement des matrices définies sous forme de plage de cellules ou non, d'autres se mettent en erreur dès qu'on leur envoie une matrice non définie strictement par une référence de plage...

En tant qu'utilisateur, on ne peut que cerner l'étendue de l'action de tel ou tel élément et ses limitations, et opérer en conséquence...

Je suis d'accord que le système de recherche pourrait être affiné, cela viendra peut-être un jour.

Cordialement.

Je sais que "planter" est un grand mot, mais je l'ai choisi avec beaucoup de soin, et d'une manière très volontaire, car je pense que c'est vraiment le cas!

Comment peut-on implementer la recherche PAR VALEUR en tenant compte du FORMAT? Il y a là une contradiction fondamentale. Il est clair qu'ils ont confondu VALEUR avec SEQUENCE AFFICHÉE.

D'ailleurs Vlookup(), Match(), Index(), etc, elles, fonctionnent bien en se basant sur la VALEUR, comme énoncé, et non pas sur le FORMAT.

Bonjour,

le problème avec .find c'est qu'avec LookIn:=xlValues, la recherche s'effectue dans la propriété TEXT des cellules, c'est-à-dire dans la valeur affichée.

Je suis un peu (beaucoup) de l'avis de stefano, j'ai du mal à croire à un choix volontaire pour ce non sens qui la rend inutilisable dans bien des cas.

eric

Hello !

Je suis d'accord que s'agissant de nombres et de dates on prend toujours des risques avec Find... et si l'on peut faire autrement, il vaut mieux ne pas s'en priver !

Ce que je voulais exprimer, c'est que c'est loin d'être le seul reproche qu'on ait à faire à Excel, reposant sur le fait qu'en tant qu'utilisateur on attendrait un comportement homogènes des diverses fonctionnalités et fonctions de l'application, que l'on n'a pas !

Soyons heureux quand on parvient à percer la logique de comportement de tel ou tel aspect ! Ce n'est pas toujours le cas.

Ce qui me met toujours en rage c'est les insuffisances sur les dates, qu'en 25 ans Microsoft n'ait pas trouvé le moyen d'étendre la plage de dates en deçà du 1er janvier 1900, et n'ait pas rectifié le bogue du 29 février 1900 ! (d'autant plus qu'il s'agissait d'un bogue volontairement introduit pour des raisons concurrentielles !) Enfin...

Bonne journée.

Attendons le XXIIe siècle

Rechercher des sujets similaires à "range find pourcentage"