Fonction FIND sous VBA

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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

    1. Contributeur
      bonjour pijaku,
      Bien trouver, j'y ai pas pensé...
      A+
    2. Modérateur
      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+
    3. fonctionne super! merci pika
  2. Contributeur
    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. 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. Contributeur
        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+
      2. le principal c'est de trouver de l'aide et des solutions...
        et surtout de les partager !