Une listbox plus de 10 colonnes sans ROWSOURCE
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
Code:
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 |
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
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