Problème remplissage Listbox à colonnes multiples

donpopo

XLDnaute Occasionnel
Bonjour le forum,

Je me casse les méninges à force d'essayer de résoudre mon problème. Je cherche à remplir une Listbox à plusieurs colonnes avec des données de deux feuilles.

J'ai consulté plusieurs tutoriels et pages web sur le remplissage de Listbox; mais je n'arrive à comprendre le système.

Je souhaite sélectionner le prénom de quelqu'un dans une première Listbox et afficher celui dans une textbox (cela pas de problème) et les coordonnées PCMN, Tx TVA et MontHTVA le concernant en quatre lignes.

De plus, la colonne Dénomination dépend de la colonne Code (le détail étant dans la deuxième feuille)

En espérant que quelque puisse m'aider, j'ai joint un petit exemple.

Donpopo
 

Pièces jointes

  • Classeur1.zip
    16.8 KB · Affichages: 50
  • Classeur1.zip
    16.8 KB · Affichages: 50
  • Classeur1.zip
    16.8 KB · Affichages: 53

bqtr

XLDnaute Accro
Re : Problème remplissage Listbox à colonnes multiples

Bonjour,

Voici une façon de faire :

Code:
Private Sub ListBox2_Change()

Dim Tablo, Tabcode, AlimLB()
Dim k As Integer, y As Integer, x As Integer, z As Integer

    If ListBox2.ListIndex = -1 Then Exit Sub
    
    Tabcode = Sheets("Feuil2").Range("A2:B" & Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row).Value
    LigneSel = ListBox2.ListIndex + 2
    x = 1
   
    With ListBox1
      .ColumnCount = 4
      .ColumnWidths = "220;60;60;50"
    End With
    
    With Sheets("Feuil1")
        TextBox1 = .Range("A" & LigneSel).Value
        Tablo = .Range("A2:M" & .Cells(Rows.Count, "A").End(xlUp).Row).Value
    End With
       
    For k = LBound(Tablo, 1) To UBound(Tablo, 1)
      If Tablo(k, 1) = TextBox1 Then
          For y = 2 To 11 Step 3
            For z = LBound(Tabcode, 1) To UBound(Tabcode, 1)
               If Tablo(k, y) = Tabcode(z, 1) Then
                   ReDim Preserve AlimLB(1 To 4, 1 To x)
                   AlimLB(1, x) = Tabcode(z, 2)
                   AlimLB(2, x) = Tablo(k, y)
                   AlimLB(3, x) = Tablo(k, y + 1)
                   AlimLB(4, x) = Tablo(k, y + 2)
                   x = x + 1
               End If
            Next
          Next
      End If
    Next
    
    ListBox1.List = Application.Transpose(AlimLB)

End Sub

A+
 
Dernière édition:

Discussions similaires