Chercher la valeur correspondent et le renvoyer dans listbox

bonjour, le forum, une nouvelle question, je cherche à renvoyer toutes les valeurs de la ligne d'une table de données qui correspondent à la valeur sélectionnée dans une listbox (L1) colonne(0) dans la liste (L2) .

L1 est alimenté par une base de données qui se trouve sur une feuille excel (ET PRIX), possède 8 colonnes et la valeur recherchée se trouve dans la colonne A en plusieurs fois (doublon).

j'ai un code que j'ai taper mais bien-sur elle ne fonctionne pas

Private Sub L1_Click()
Dim a, y, x, I
With Sheets("ET_PRIX")
 y = L1.List(L1.ListIndex - 1, 0)
 For x = 1 To .Range("A" & Rows.Count).End(xlUp).Row
 Set a = .Columns(1).Find(Me.L1.List(y, 0), , , xlWhole)
    If Not a Is Nothing Then
        For I = 1 To 8
           Me.L2.List(x - 1, I - 1) = .Cells(a.Row, I).Value
        Next I
    End If
   Next x
End With
End Sub

voila si quelqu'un a compris ma demande et veux m'aider je suis open

merci d'avoir pris le temps de me lire !

Bonjour Ramsapat, bonjour le forum,

Avec le fichier ce serait tellement plus facile de t'aider...

re le forum

merci d'essayer de m'aider

ci joint le fichier

enfaîte je veux afficher mes sous détails de prix pour modif

18gfpteste.xlsm (568.05 Ko)

Bonjour Ramsapat, bonjour le forum,

Il y a des références que je n'ai pas et donc impossible de lancer l'userform (même en décochant ces référence manquantes) via le bouton GO. J'ai quand même réussi à modifier le code dans ton fichier modifié en pièce jointe.

Le code :

Private E As Worksheet 'déclare la variable E (onglet ET_PRIX)
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Private Sub UserForm_Initialize()
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)

Set E = Sheets("ET_PRIX") 'définit l'onglet E
TV = E.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
With Me.L1 'prend en compte la listbox L1
    For I = 3 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la troisième)
        If Not D.Exists(TV(I, 1)) Then 'si la clé n'existe pas dans le dictionnaire D
            D.Add TV(I, 1), I 'ajoute la clé au dictionnaire D
            .AddItem TV(I, 1) 'ajoute la donnée ligne I colonne 1 à la colonne 0 de la listbox L1
            For J = 1 To 8 'boucle 2 : sur les 8 dernières colonnes de la listbox L1
                .Column(J, .ListCount - 1) = TV(I, J + 1) 'ajoute la données lige I colonne J+1 de TV à la colonne J de la listbox L1
            Next J 'prochaine colonne de la boucle 2
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 1
End With 'fin de la prise en compte de la listbox L1
aa = Sheets("BD_Prod").Range("A6:P" & Sheets("BD_Prod").Range("A" & Rows.Count).End(3).Row)
L3.List = aa
L1.ColumnCount = 9 'définit le nombre de colonnes de la listbox L1
L2.ColumnCount = 9 'définit le nombre de colonnes de la listbox L2
L3.ColumnCount = 15 'définit le nombre de colonnes de la listbox L3
End Sub

Private Sub L1_Click() 'ai clic dans la listbox L1
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)

With Me.L2 'prend en compte la listbox L3
    .Clear 'efface le contenu de la listbox L2
    For I = 3 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la troisième)
        If TV(I, 1) = Me.L1.Value Then 'condition : si la donnée ligne I colonne 1 de TV est égale à la valeur de la listbox L1
            .AddItem TV(I, 1) 'ajoute la donnée ligne I colonne 1 à la colonne 0 de la listbox L2
            For J = 1 To 8 'boucle 2 : sur les 8 dernières colonnes de la listbox L2
                .Column(J, .ListCount - 1) = TV(I, J + 1) 'ajoute la données lige I colonne J+1 de TV à la colonne J de la listbox L2
            Next J 'prochaine colonne de la boucle 2
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 1
End With 'fin de la prise en compte de la listbox L2
End Sub

Le fichier :

69ramsapat-v01.xlsm (397.38 Ko)

bonjour le forum ,ThauThème,

alors la .. sa c'est du travail de pro!! c'est très explicite tout est commenté c'est trop top !! je te remercie beaucoup non seulement sa fonctionne mais en plus j'arrive a comprendre c'est le top !

Rechercher des sujets similaires à "chercher valeur correspondent renvoyer listbox"