Fonction FIND sous VBA

Résolu
kurth Messages postés 22 Statut Membre -  
 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

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      bonjour pijaku,
      Bien trouver, j'y ai pas pensé...
      A+
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    3. alex38
       
      fonctionne super! merci pika
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. kurth Messages postés 22 Statut Membre 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
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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
    2. kurth Messages postés 22 Statut Membre 1
       
      le principal c'est de trouver de l'aide et des solutions...
      et surtout de les partager !
      0