Remplir listbox en lignes et colonnes à partir de cellules
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai une ComboBox dans un UserForm qui me sert à lister des clients. Chaque client possède un ID client.
Mon objectif est d'afficher dans une ListBox l'ensemble des devis liés à ce client. Un devis est composé d'un ensemble de cellule d'une même ligne (de la colonne A à O) et la colonne A correspond à l'ID client.
J'aimerai trouver une solution me permettant, au changement de client, d'afficher un devis par ligne dans la ListBox.
J'ai essayé avec .AddItem (limité à 10 éléments alors que j'en ai 14 à rentrer), avec .List en déclarant le nombre de colonne, avec un tableau mais rien ne fonctionne. Je me suis alors lancé par dépit dans la méthode bourrin en stockant l'ensemble du devis dans une variable que j'affiche ensuite dans la ListBox. Cependant, vu que le texte des cellules n'est pas de la même longueur, rien n'est aligné.
Voici le code à l'heure actuelle :
Code:
Private Sub ComboBox_nom_Change()
Dim derniereligne As Integer
Dim client As String
Dim ID_client As Integer
Dim devis As String
ListBox_historique.Clear
Worksheets("Partie Client").Activate
derniereligne = Cells(Rows.Count, 2).End(xlUp).Row
client = TextBox_nom.Text
For i = 2 To derniereligne
If Range("B" & i).Value = client Then
ID_client = Range("A" & i).Value
End If
Next
Worksheets("Partie Devis").Activate
derniereligne = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To derniereligne
If Range("A" & i).Value = ID_client Then
devis = 0
devis = devis + Range("B" & i).Text & " " & Range("C" & i).Text & " " & Range("D" & i).Text & " " 'etc jusqu'à la clonne O'
ListBox_historique.AddItem (devis)
End If
Next
End Sub
Je recevrai volontier toute remarque, conseil ou astuce.
Merci d'avance pour vos retours.
Cordialement, Kiwish.
- Remplir listbox en lignes et colonnes à partir de cellules
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Partage de photos en ligne - Guide
- Comment faire des colonnes sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
2 réponses
Bonjour,
Une astuce pour avoir plus de 10 colones dans une listbox:
'listbox plus de 10 colonnes Dim t(14) '0 a 13 pour 14 colonnes Me.ListBox2.Column = t ListBox2.ColumnCount = 14 ListBox2.BoundColumn = 14 ListBox2.ColumnWidths = "40;40;40;40;40;40;40;40;40;40;40;40;40;40" Me.ListBox2.Clear Me.ListBox2.AddItem "COL1" Me.ListBox2.List(0, 1) = "COL2" Me.ListBox2.List(0, 2) = "COL3" Me.ListBox2.List(0, 3) = "COL4" Me.ListBox2.List(0, 4) = "COL5" Me.ListBox2.List(0, 5) = "COL6" Me.ListBox2.List(0, 6) = "COL6" Me.ListBox2.List(0, 7) = "COL7" Me.ListBox2.List(0, 8) = "COL8" Me.ListBox2.List(0, 9) = "COL9" Me.ListBox2.List(0, 10) = "COL10" Me.ListBox2.List(0, 11) = "COL11" Me.ListBox2.List(0, 12) = "COL12" Me.ListBox2.List(0, 13) = "COL13" Me.ListBox2.List(0, 14) = "COL14"
Par contre, comprends pas vraiment votre remplissage
Bonjour,
J'imagine qu'il est alors impossible de rentrer une variable en guise de ligne.
Ah que si:
Private Sub CommandButton1_Click() 'listbox plus de 10 colonnes Dim t(14) '0 a 13 pour 14 colonnes Me.ListBox1.Column = t ListBox1.ColumnCount = 14 ListBox1.BoundColumn = 14 ListBox1.ColumnWidths = "40;40;40;40;40;40;40;40;40;40;40;40;40;40" Me.ListBox1.Clear For n = 0 To 20 Me.ListBox1.AddItem "COL1" Me.ListBox1.List(n, 1) = "COL2" Me.ListBox1.List(n, 2) = "COL3" Me.ListBox1.List(n, 3) = "COL4" Me.ListBox1.List(n, 4) = "COL5" Me.ListBox1.List(n, 5) = "COL6" Me.ListBox1.List(n, 6) = "COL6" Me.ListBox1.List(n, 7) = "COL7" Me.ListBox1.List(n, 8) = "COL8" Me.ListBox1.List(n, 9) = "COL9" Me.ListBox1.List(n, 10) = "COL10" Me.ListBox1.List(n, 11) = "COL11" Me.ListBox1.List(n, 12) = "COL12" Me.ListBox1.List(n, 13) = "COL13" Me.ListBox1.List(n, 14) = "COL14" Next n End Sub
Bonjour merci pour cette réponse,
J'ai essayé la méthode mais je retrouve le même problème que précédemment. Je souhaite boucler ce bout de code afin de remplir plusieurs lignes dans la ListBox. Cependant, avec .List(0, 13) (par exemple) il n'est possible de remplir que la première ligne. J'ai alors essayé de boucler avec .List(i, 13) mais la propriété de la fonction .List n'est pas valable. J'imagine qu'il est alors impossible de rentrer une variable en guise de ligne.
S'il existe une méthode je suis preneur :)