Menu

[vba] recherche d'une valeur EXACTE [Résolu/Fermé]

Messages postés
32
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
- - Dernière réponse :  Mimi - 13 avril 2018 à 16:56
Bonjour,

Débutante en vba,
je recherche la valeur "NumUnique" parmi les cellules "B39 à B200" grâce au code :
"
Set CelluleTrouvee = Range("B39:B200").Find(NumUnique, LookIn:=xlValues)
"

PROBLEME : ma macro ne me retourne pas les cellules de valeur EGALE à la valeur NumUnique recherchée, mais les cellules CONTENANT NumUnique.
Par exemple, si je recherche NumUnique = 2
le résultat est CelluleTrouvee.Value = 52

Connaissez vous une autre fonction me retournant une cellule contenant la valeur exacte recherchée ?
Sinon, auriez-vous un exemple simple permettant de contourner le problème ?

D'avance merci !
Céline
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
1227
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
542
46
Merci
Bonjour,

La méthode Find admet un argument facultatif de type variant "Lookat", les valeurs possibles sont xlWhole ou xlPart...
En reprenant ton exemple, ça fait :

Public Sub test()

Dim numéro As Integer
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer

numéro = 8

Set celluletrouvee = Range("A1:A5").Find(numéro, lookat:=xlWhole)

If celluletrouvee Is Nothing Then
MsgBox ("pas trouvé")
Else
ligne = celluletrouvee.Row
col = celluletrouvee.Column
MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & col)
End If

End Sub

Dire « Merci » 46

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 40085 internautes nous ont dit merci ce mois-ci

hich24
Messages postés
1578
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
14 décembre 2017
965 -
merci
Top, merci !
Merci ligne de code très utile !
Messages postés
32
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
15
15
Merci
Merci beaucoup !

l'argument lookat:=xlWhole permet effectivement de rechercher une valeur exacte,
à opposer à lookat:=xlPart qui permet de rechercher une valeur contenue dans la cellule ou la feuille, par défaut en absence d'argument.
Messages postés
15
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
30 septembre 2010
2
6
Merci
Bonjour,

Dans une feuille excel, je cherche à trouver selctionner la cellule contenant la date d'aujourd'hui en cliquant sur une CommandBox:

Voici le code que j'ai mis:

Code :

Private Sub cmd_today_Click()


Dim today As Date
Dim celluletrouvee As Range
Dim ligne As Integer
Dim colonne As Integer

today = Date

Set celluletrouvee = Range("D3:HE3").Find(today, lookat:=xlWhole)

If celluletrouvee Is Nothing Then
MsgBox ("pas trouvé " + Chr(13) + Str(Date))
Else
ligne = celluletrouvee.Row
col = celluletrouvee.Column
MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & colonne)
celluletrouvee.Select
End If

End Sub



Mais, la fonction utilisée ne me trouve aucune cellule (alors que bien sur, il y a une cellule qui contient la date du jour...)
Par contre, cette cellule est une formule (=case de gauche +1)

Merci pour vos contrib'

@+
Messages postés
32
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
15
4
Merci
Malheureusement, ça ne recherche toujours pas la valeur exacte, mais la valeur contenue.

Ce petit programme test le prouve :

"Public Sub test()

Dim numéro As Integer
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer

numéro = 8

Set celluletrouvee = Range("A1:A5").Find(numéro)

ligne = celluletrouvee.Row
col = celluletrouvee.Column

MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & col)

End Sub
"

Car elle renvoit les coordonnées d'une cellule contenant le nombre 48, alors que je recherche le nombre 8 !
Messages postés
32
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
15
3
Merci
Quand tu utilises la méthode find parmi des formules, il faut lui préciser si tu veux comparer ton string avec les formules ou avec leurs résultats :

Essaye avec find(today, lookin:= xlValues, lookat:= xlWhole)
Messages postés
3
Date d'inscription
vendredi 28 septembre 2007
Statut
Membre
Dernière intervention
13 février 2008
2
2
Merci
Bonjour cel92,

Il suffit d'enlever la partie " LookIn:=xlValues" de ton code.