VBA-recherche la ligne d'un objet dans une liste

Bonjour,

dans mon document excel, je veux utiliser une syntaxe vba pour pouvoir localiser la ligne exacte dans laquelle se trouve une chaine de caractère (plus précisément, le document excel contient plusieurs feuilles. une de ces feuilles contient une liste d'articles avec leurs prix. je veux que la syntaxe me permet de chercher la ligne exacte d'un article se trouvant dans une cellule dans une autre feuille {nommé atelier}et qu'elle me retourne le prix de cet article.)

voici le code que j'utilise:

Dim c As Range
Dim therow As Integer
With Worksheets("Liste des art").Range("A2:A150")
Set c = .Find(what:=Worksheets("Atelier").Cells(4, 3).Value, LookAt:=xlWhole)
therow = c.Row
Worksheets("resultat").Range("C6").Value = Worksheets("Liste des art").Cells(therow, 3).Value
End With

quand j'essaie de lancer, un erreur d"exécution 91 parvient: "variable objet ou variable de bloc with non définie"

pouvez vous m'aider à trouver une solution? ( à noter que je ne veux pas utiliser la fonction vlookup car elle n'existe pas dans la bibiliothèque de mon excel)

j'espère que tout est clair.

Merci de votre attention.

bonne journée !

Bonjour firasbhr et

Perso, j'utilise une fonction que j'ai créé

Function vFindR(ShtS As Worksheet, sRngS As String, sWhat As String, sLetColR As String, Optional How As Long)
  Dim LigFind As Long
  ' ShtS = Objet Feuille dans laquelle chercher
  ' sRngS = Plage dans laquelle chercher
  ' sWhat = Quelle valeur chercher
  ' sLetColR = Lettre de la Colonne pour retour de la valeur
  vFindR = "": LigFind = 0
  ' Comment doit s'éffectuer le recherche
  ' Si How est omis, on recherche dans une partie du contenu
  If How = 0 Then How = xlPart
  ' En cas d'erreur
  On Error Resume Next
  ' Effectue la recherche
  With ShtS.Range(sRngS)
    LigFind = .Find(What:=sWhat, LookIn:=xlValues, LookAt:=How, SearchOrder:=xlByRows, _
                    MatchCase:=False, SearchFormat:=False).Row
    If Err.Number = 0 Then
      vFindR = ShtS.Range(sLetColR & LigFind).Value
    Else
      ' Possibilité de retourner un pseudo #N/A si recherche infructueuse
      vFindR = "NA?"
    End If
  End With
  On Error GoTo 0
End Function

Et tu l'appelles de la façon suivante

Si la valeur à chercher est dans la colonne A et que la valeur à retourner est dans la B

MaValeur = vFindR(sheets("NomFeuille"),"A:A","ValeurATrouver","B",xlWhole)

A+

Bonjour,

Un autre exemple.

Cdlt.

Public Sub XXX()
Dim v, rng As Range, rw As Long
    v = Worksheets("Atelier").Cells(4, 3).Value
    Set rng = Worksheets("Liste des art").Range("A1:A150")
    On Error Resume Next
    rw = Application.Match(v, rng, 0)
    If Not IsError(rw) Then
        Worksheets("resultat").Cells(6, 3).Value = Worksheets("Liste des art").Cells(rw, 3).Value
    End If
End Sub
Rechercher des sujets similaires à "vba recherche ligne objet liste"