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 : 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
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