Recherche valeur dans un tableau

Bonjour à tous

Je reviens vers vous car mes lacunes en VBA me font galérer.

Mon problème, j'ai un classeur avec 2 feuilles (Feuil1, Feuil2). Je voudrai rechercher une valeur du tableau de la Feuil1 Colonne Reference dans le tableau de la Feuil2 Colonne Reference2 et si la valeur a été trouvée, mettre dans la Colonne 2 de Feuil1 "Pas Vendu" si pas trouvé "Vendu"

Je joins le fichier exemple Merci pour votre précieuse aide.

5test-tab.xlsm (19.23 Ko)

Bonsoir uzu13160,

Une formule à insérer en b3 et à tirer vers le bas : =SI(ESTNUM(EQUIV(Tab_1[@Reference];Tab_2[Reference2];0));"Pas vendu";"Vendu")

Cordialement.

Bonsoir Zebulon2

Merci pour la réponse, par contre j'aurai voulu en VBA car je souhaite pas qu'il y ait de formules dans les cellules

Cdlt

Bonjour à tous,

J'ai essayé d'adapter en VBA, à partir de ce que j'ai compris de la réponse de Zébulon2. Je n'ai pas ouvert votre fichier.

Sub ControleVentes()

Dim i%
Dim NbLignes%

NbLignes = Range("Tab1[Ref1]").rows.count

For i=1 to NbLignes
  If Worksheetfunction.match(Range("Tab1[Ref1]").cells(i).value, Range("Tab2[Ref2]"),0) is Numeric Then
      Range("B" & i).value = "Pas vendu" 'à adapter selon le nom de la colonne
  Else: Range("B" & i).value = "Vendu"
  end if
next i

End sub

Ce morceau de code fonctionne uniquement si les tableaux sont nommés. Et Range("B"& i) peut aisément devenir Range("Tab1[EstVendu]").cells(i) par exemple où "EstVendu" est le nom de la colonne en B annexée au Tab1.

Merci 3GB

Je vais essayer. Je mets le code pour info de mon classeur

Sub Def_Tableau()
Dim Plage As Range
Sheets("Feuil1").Select
    Set Plage = Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1))
    Plage.Select
On Error Resume Next
ActiveSheet.ListObjects("Tab_1").Unlist

ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)), , xlYes).Name _
    = "Tab_1"
ActiveSheet.ListObjects("Tab_1").TableStyle = "TableStyleLight8"

ActiveSheet.ListObjects("Tab_2").Unlist
Sheets("Feuil2").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)), , xlYes).Name _
    = "Tab_2"
ActiveSheet.ListObjects("Tab_2").TableStyle = "TableStyleLight8"
sNA = ""
lig = Sheets("Feuil1").Range("A65536").End(xlUp).Row

For i = 2 To lig
Sheets("Feuil1").Cells(i, 2).Select

sNA = Application.Index(Range("Tab_1[Reference]"), Application.Match(Sheets("Feuil1").Cells(i, 1).Value, Range("Tab_2[Reference2]"), 0))
    If IsError(sNA) Then
      ActiveCell.Value = "Vendu"
     Else
      ActiveCell.Value = sNA
     End If

Next
End Sub

Encore merci pour l'aide que vous m'apportez

Bonjour,

Une proposition ?

Cdlt

5test-tab.xlsm (19.88 Ko)
Private Sub Worksheet_Activate()
Dim TD As Range, TD2 As Range, Cell As Range, v
    Set TD = Me.Range("Tab_1"): Set TD2 = Worksheets("Feuil2").Range("Tab_2")
    For Each Cell In TD.Columns(1).Cells
        On Error Resume Next
        v = Application.Match(Cell.Value, TD2.Columns(1), 0)
        With Cell.Offset(, 1)
            If Not IsError(v) Then
                .Value = "Vendu"
            Else
                .Value = "Pas vendu"
            End If
        End With
    Next Cell
End Sub

Désolé 3GB mais ca fonctionne pas ! j'ai une erreur 424 Objet requis

test tab1

Bonjour,

Il faut remplacer "Worksheet.Function" par "Worksheetfunction" tout collé.

Après, il faudra s'assurer que les colonnes Reference et Reference2 existent bien respectivement dans les tableaux Tab_1 et Tab_2.

Par ailleurs, la variable sNA est-elle bien définie ?

Bonjour 3GB

Merci, ton code fonctionne très bien !! j'ai juste remplacer le Me.Range("Tab_1") par Range("Tab_1")

Bonne journée

Nickel,

Merci et bonne continuation à toi,

Rechercher des sujets similaires à "recherche valeur tableau"