nombre de colonne dans une listebox avec une boucle

zephir94

XLDnaute Impliqué
Bonjour à tous,

Y a t'il une astuce pour dépasser la 9 ème colonne dans une listbox
en effet j'ai bien utilisé l'aide et il est dit que la listbox n'accepte qu'un seul index soit de 0 à 9 mais en utilisant une boucle pour remplir jusqu'à la colonne 11 soit 10 existe t'il un moyen de contourner ce problème ?

VB:
Private Sub UserForm_Initialize()
vj = Sheets(2).Range("A65536").End(xlUp).Row
For p = 2 To vj
UserForm1.ListBox1.ColumnWidths = "50;50;160;60;60;60;60;60;60;60;60;60;60;60"
ListBox1.AddItem
        toto = ListBox1.ListCount - 1
        ListBox1.List(toto, 0) = Sheets(2).Range("D" & p).Value
        ListBox1.List(toto, 1) = Sheets(2).Range("F" & p).Value
        ListBox1.List(toto, 2) = Sheets(2).Range("G" & p).Value
        ListBox1.List(toto, 3) = Sheets(2).Range("H" & p).Value
        ListBox1.List(toto, 4) = Sheets(2).Range("I" & p).Value
        ListBox1.List(toto, 5) = Sheets(2).Range("J" & p).Value
        ListBox1.List(toto, 6) = Sheets(2).Range("S" & p).Value
        ListBox1.List(toto, 7) = Format(Sheets(2).Range("AM" & p).Value, "0.00")
        ListBox1.List(toto, 8) = Format(Sheets(2).Range("AR" & p).Value, "0.00")
        ListBox1.List(toto, 9) = Format(Sheets(2).Range("AT" & p).Value, "0.00")
        ListBox1.List(toto, 10) = Format(Sheets(2).Range("AU" & p).Value, "0.00")
        ListBox1.List(toto, 11) = Format(Sheets(2).Range("AV" & p).Value, "0.00")
Next
End Sub

Merci par avance pour vos aides

Amicalement
Zephir94
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir zephir :)

Un exemple de Jacques Boisgontier. Les array sont les numéros des colonnes

VB:
Private Sub UserForm_Initialize()
  Set f = Sheets(2)
  Tbl1 = f.Range("D2:AV" & f.[D65000].End(xlUp).Row).Value
  Dim Tbl2: ReDim Tbl2(1 To UBound(Tbl1), 1 To 10)
  j = 0
  For Each k In Array(4, 6, 7, 8, 9, 10)  < - - - Ajoute  les n° de colonnes
     j = j + 1
     For i = 1 To UBound(Tbl1): Tbl2(i, j) = Tbl1(i, k): Next i
  Next k
  Me.ListBox1.List = Tbl2
End Sub
 
Dernière édition:

zephir94

XLDnaute Impliqué
Bonsoir lone Wolf,
Merci pour ta réponse mais je ne vois pas comment je peux l'adapter à ma prog
Aurais tu une idée ?
Modifier ma boucle en définissant toutes les colonnes de 1 à 11 Avec Array mais le problème sera le même car arrivé à 10 ...
Merci par avance si tu as une piste
Amicalement
Zephir94
 

Lone-wolf

XLDnaute Barbatruc
Re

zephir, c'est quand même pas compliqué. Suit attentivement les commentaires. Sinon met le fichier.

EDIT: Copie ce code que j'ai adapté selon ton exemple et regarde le résultat en PJ. Double-clique sur la feuille pour afficher le formulaire.

VB:
Option explicit
Dim  f As Worksheet, Tbl1(), Tbl2
Dim j&, k&, i&, col&

Private Sub UserForm_Initialize()
    ListBox1.ColumnWidths = "60;60;60;60;60;60;60;60;60;60;60;60"
    ListBox1.ColumnCount = 12
    Set f = Sheets(2)
    Tbl1 = f.Range("D2:AV" & f.[AV65000].End(xlUp).Row).Value
     ReDim Tbl2(1 To UBound(Tbl1), 1 To 45)
    j = 0
    For Each k In Array(1, 3, 4, 5, 6, 7, 16, 36, 41, 43, 44, 45)
        j = j + 1
        For i = 1 To UBound(Tbl1): Tbl2(i, j) = Tbl1(i, k): Next i
    Next k
    ListBox1.List = Tbl2
    For i = 0 To ListBox1.ListCount - 1
        For col = 1 To 12
            If IsNumeric(ListBox1.List(i, col)) Then _
            ListBox1.List(i, col) = Format(ListBox1.List(i, col), "0.00")
        Next col
    Next i
End Sub
 

Pièces jointes

  • Source.xlsm
    22.8 KB · Affichages: 28
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour Nicole :), zephir :)

Dans le classeur exemple, j'ai renommé les entête de la feuille comme celles des colonnes pour mieux voir. À nouveau, double-clique sur la feuille pour afficher le formulaire.
 

Pièces jointes

  • Exemple-V2.xlsm
    22.9 KB · Affichages: 39

Discussions similaires

Réponses
17
Affichages
760