bonjour a tous
quand on remplie une listbox dans avec deux boucles imbriquées on est contraint a 10 colonnes
quand elle est remplie avec ROWSOURCE elle est figé on ne peut plus modifier quoi que ce soit
quand on la remplie avec un range on a la possibité de + de 10 colonne mais les valeurs sont celles de la plage(range)
je vous propose cette astuce
dans l'exemple qui suit elle est remplie avec 2 boucle inbriquées sur 15 colonnes
en effet l'orsque l'on la remplie avec une plage par le ".List", elle accepte + de 10 colonne et quand on la vide elle garde le dimensionnement du columncount
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Option Explicit Private Sub UserForm_Activate() Dim I As Long, C As Long With ListBox1 .ColumnCount = 15 '-------------------------------------------------- ' !!!!!!C EST CA L ASTUCE!!!!!!!!!on la renplie avec une ligne de cellule(15 colonne) et on la clear .List = Range("A1").Resize(1, .ColumnCount).Value: .Clear '-------------------------------------------------- 'elle est maintenant dimentionné a 15 colonne et valide pour 15 colonnes MEME!!!!!! si elle est vide !!!!!!!!!!!! 'maintenant on (((peut)))!!! la remplir normalement avec 2 boucles ligne/colonnes )imbriquées For I = 0 To 10 .AddItem "" For C = 0 To 14 .List(I, C) = "Ligne" & I + 1 & " Col" & C + 1 Next Next End With End Sub Private Sub UserForm_Click() End Sub
le principe et donc de la remplir provisoirement avec 1 range d'une ligne et x colonnes et de la vider avant de la remplir avec les boucles
testé sur 2007 et 2013
Partager