Rechercher : dans
Par :

[vba] recherche d'une valeur EXACTE

Dernière réponse le 2 sep 2008 à 17:30:44 cel92, le 13 fév 2008 à 12:06:59 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [vba] recherche d'une valeur EXACTE » dans :
Google - Recherche d'une expression exacte VoirLorsque l’on souhaite faire la recherche d’une expression exacte, il suffit de mettre cette expression entre guillemets. Exemple : "animal domestique" référencera uniquement les sites comportant l’expression "animal domestique".
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
[VBA] RechercheV Polyvalente VoirRECHERCHEV POLYVALENTE Pour les accros et les inconditionnels des fonctions d'Excel, avant de crier au scandale, lisez les quelques lignes suivantes. La RechercheV d'origine a beaucoup de limites: La colonne de la donnée doit être avec un...

1

aminea, le 13 fév 2008 à 14:49:09

Bonjour cel92,

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

Répondre à aminea

2

cel92, le 14 fév 2008 à 09:57:51

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 !

Répondre à cel92

3

tompols, le 14 fév 2008 à 12:39:04
  • +3

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

Répondre à tompols

4

cel92, le 14 fév 2008 à 13:50:52

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.

Répondre à cel92

5

jokair8, le 26 aoû 2008 à 19:34:40

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'

@+

Répondre à jokair8

6

 cel92, le 2 sep 2008 à 17:30:44

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)

Répondre à cel92