Fonction FIND sous VBA

Résolu
kurth Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
 alex38 -
Bonjour,
je cherche à faire une recherche de texte "STRICTE" dans une plage de données en VBA
ci-dessous mon code qui ne donne pas le resultat voulu :

CodeArticle = "essai"
With Sheets("feuil1").Columns("A:A")
Set trouve = .Find(CodeArticle, LookIn:=xlValues)
End With
If Not trouve Is Nothing Then
Ligne = Selection.Find(CodeArticle, LookIn:=xlValues).Row
End If

si dans colonne A de feuil1 j'ai la liste suivante :
Range("A1") = essai1
Range("A2") = essai2
Range("A3") = essai3
Range("A4") = essai
Range("A5") = essai4
Range("A6") = essai5

la valeur Ligne=1 alors que je voudrais trouver 4

comment puis je faire ?

merci d'avance

A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Bonjour à tous,
Pour une recherche "stricte", vous pouvez utiliser la fonction Match. Exemple de Silkyroad :

Sub test()
Dim Cible As String
Dim x As Long
 
Cible = "essai"
 
On Error Resume Next
x = Application.Match(Cible, Worksheets("Feuil1").Columns("A:A"), 0)
 
If x = 0 Then
    MsgBox "Valeur " & Cible & " non trouvée."
    Else
    MsgBox "Valeur " & Cible & " trouvée dans la ligne: " & x
End If
End Sub

2
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
bonjour pijaku,
Bien trouver, j'y ai pas pensé...
A+
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Salut lermite222,
Je n'y songeais pas non plus... Lorsque j'ai consulté ce message la première fois, tu n'étais pas encore passé... J'ai cherché sur Internet car le "stricte" me turlupinait... Et voilà que je suis retombé sur un "classique" du genre.
Bonne fêtes de fin d'année à toi et tes proches.
A+
0
alex38
 
fonctionne super! merci pika
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Les données doivent êtres mise par ordre alphabétique.
Et tu peu remplacer ton 2èm Find par..
    Rows(Trouve.Row).Select

A+
1
kurth Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   1
 
merci à tous.
j'ai trouvé une autre solution avec la fonction find! il suffit d'ajouter l'argument suivant dans la syntaxe

With Sheets("feuil1").Columns("A:A")
Set trouve = .Find(CodeArticle, LookIn:=xlValues,LookAt:=xlWhole)
End With
1
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bravo et..
Merci, ça nous permet de nous remettre en mémoire certaines solutions qui nous ont échaper.
(Ont peu pas tout mémoriser,(y a tellement de solutions))
A+
0
kurth Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   1
 
le principal c'est de trouver de l'aide et des solutions...
et surtout de les partager !
0