Fonction FIND sous VBA

Résolu/Fermé
kurth Messages postés 21 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 24 septembre 2013 - 17 déc. 2010 à 11:45
 alex38 - 30 janv. 2013 à 14:51
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

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
17 déc. 2010 à 14:09
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 17/12/2010 à 14:18
bonjour pijaku,
Bien trouver, j'y ai pas pensé...
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
17 déc. 2010 à 14:19
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
fonctionne super! merci pika
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 déc. 2010 à 13:54
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 lundi 4 janvier 2010 Statut Membre Dernière intervention 24 septembre 2013 1
17 déc. 2010 à 14:25
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 17/12/2010 à 14:45
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 lundi 4 janvier 2010 Statut Membre Dernière intervention 24 septembre 2013 1
17 déc. 2010 à 15:07
le principal c'est de trouver de l'aide et des solutions...
et surtout de les partager !
0