Recherche Nom de l'article dans tableau via VBA

Bonjour à tous

j'ai un tableau en Feuil1 j’inscris les noms des références en colonne C ( ref125 etc...)

Je voudrais ajouter les noms des articles (colonne D) qui se trouvent dans Feuil2

Mon souci c'est que dans la Feuil2 c'est une importation extérieur et les colonnes peuvent varier , une fois le résultat de la recherche peut se trouver dans la colonne 2 voir 3 etc ...

J'ai fait une petite macro pour vous aider à mieux comprendre

Nom de l'article
ref125?
ref126?
ref127?

Merci pour votre aide

16macrorecherche.xlsm (16.38 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Option Explicit

Dim f2 As Worksheet, tablo1, tablo2()
Dim i1&, i2&

Sub NomDeLarticle()

    Set f2 = Sheets("Feuil2")
    tablo1 = Range("C8:D" & Range("C" & Rows.Count).End(xlUp).Row)
    tablo2 = f2.Range("Tableau1")

    For i1 = 1 To UBound(tablo1, 1)
        For i2 = 1 To UBound(tablo2, 1)
            If tablo2(i2, 1) = tablo1(i1, 1) Then
                tablo1(i1, 2) = tablo2(i2, 3)
                Exit For
            End If
        Next i2
    Next i1
    Range("C8").Resize(UBound(tablo1, 1), 2) = tablo1
End Sub

Bye !

Bonsoir GMB, heureux de te revoir :)

C'est parfait,

je vais utiliser plus tard pour d'autres options

Dans le même principe

1) rechercher la liste des références qui se trouve dans un onglet "Options"

2) la recherche se fera dans l'onglet "importation"

3) et l'affichage se fera dans l'onglet "Accueil"

Il faut faire comme ceci si je ne me trompe pas ?

    Set f2 = Sheets("importation")
    tablo1 = Sheets("Options").Range("C8:D" & Range("C" & Rows.Count).End(xlUp).Row)
    tablo2 = f2.Range("Tableau1")

    For i1 = 1 To UBound(tablo1, 1)
        For i2 = 1 To UBound(tablo2, 1)
            If tablo2(i2, 1) = tablo1(i1, 1) Then
                tablo1(i1, 2) = tablo2(i2, 3)
                Exit For
            End If
        Next i2
    Next i1
    Sheets("Accueil").Range("C8").Resize(UBound(tablo1, 1), 2) = tablo1

Bravo ! Tu as tout compris !

Bye !

Bonjour,

Je ne comprend pas il m'affiche un résultat venant de l'onglet "Options"

Dim f2 As Worksheet, tablo1, tablo2()
Dim i1&, i2&

    Set f2 = Sheets("Options") 'comme Feuil2 dans ton exemple
    tablo1 = Range("G3:G" & Range("G" & Rows.Count).End(xlUp).Row) 'Zone feuil2
    tablo2 = Range("Tableau") 'Mon tableau (en feuille3)

    For i1 = 1 To UBound(tablo1, 1)
        For i2 = 1 To UBound(tablo2, 1)
            If tablo2(i2, 2) = tablo1(i1, 1) Then
                tablo1(i1, 3) = tablo2(i2, 3)
                Exit For
            End If
        Next i2
    Next i1

  Sheets("Feuil1").Range("C8").Resize(UBound(tablo1, 1), 1) = tablo1

Bonjour

Envoie ton fichier et je regarde ça ....

Bye !

Bonjour,

J'ai un peu touché mais pas grand chose, je voudrais récupérer la colonne M de la feuille 2

et comme dit plus haut :

Mon souci c'est que dans la Feuil2 c'est une importation extérieur et les colonnes peuvent varier

elles peuvent varier d'emplacement, La colonne M peut devenir la colonne E voir F voir d'autres aussi.

Édité : j'ai oublié de préciser que je connais le nom de la colonne pour tout les cas , dans mon fichier ci dessus c'est "Colonne11"

Nouvelle version

Bye !

Bonjour,
Si tu connais le nom de la colonne, tu peux te référer à son index !?
Cdlt.

Private Sub cmdSearchValues_Click()
Dim lo As ListObject, tblData, tblResult, lCol As Long, i As Long
    Set lo = Worksheets("Feuil2").Range("Tableau1").ListObject
    lCol = lo.ListColumns("Colonne11").Index
    tblData = lo.Range.Value
    tblResult = Me.Range("C8:D" & Range("C" & Rows.Count).End(xlUp).Row)
    For i = LBound(tblResult) To UBound(tblResult)
        tblResult(i, 2) = Application.VLookup(tblResult(i, 1), tblData, lCol, False)
    Next i
    Me.Range("C8").Resize(UBound(tblResult, 1), 2) = tblResult
End Sub

Merci beaucoup pour votre aide .

Affaire réglée

Rechercher des sujets similaires à "recherche nom article tableau via vba"