Bonsoir Moa
Comportement normal de la macro.
La méthode find de l'objet range ne cherche pas les cellules dont la valeur = xxx mais les cellules dont le contenu contient la chaine de caractères xxx.
Il est normal si tu cherches un 2 que les cellules contenant 22, A22, 2 soient sélectionnées puisqu'elles contiennent toutes un 2
Si tu veux sélectionner les cellules contenant non pas 2 en sous-chaîne mais 2 en mot entier tu peux modifier l'instruction demandant la recherche de la chaîne contenue dans test de la façon qui suit :
Set C = ce.Find(test, LookIn:=xlValues, LookAt:=xlWhole)
Mais attention si ta cellule contient "2 2" elle sera sélectionnée
Si tu veux sélectionner que les cellules contenant exclusivement la valeur testée, programmer la séquence suivante qui chaque fois qu'elle trouve la chaîne contenue dans test, vérifie si cette chaîne correspond au contenu complet de la cellule avant de chaîner le range
'Initialisation des paramètres (pour tester)
Dim ce, rng As Range
Set ce = Range(Selection.Address)
test = 2
'Constitution du range groupant les cellules dont le contenu vérifie le test
Set c = ce.Find(test, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
FirstAddress = c.Address
Set rng = Range(c.Address)
Do
If c.Value = test Then
Set rng = Union(rng, Range(c.Address))
End If
Set c = ce.FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
'Coloriage des cellules contenant la valeur recherchée (pour vérifier)
If Not rng Is Nothing Then rng.Interior.ColorIndex = 5
'
End Sub
En espérant avoir répondu à ta question
Cordialement.