Listbox 2 colonnes

Résolu/Fermé
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 18 nov. 2012 à 22:08
michelbr Messages postés 9 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 28 mars 2013 - 19 févr. 2013 à 08:01
Bonjour,

j'ai une formule qui alimente un listbox
For r = 2 To 10000
BD.AddItem Feuil2.Cells(r, 1)
If Feuil2.Cells(r + 1, 1) = "" Then r = 10000
Next
je voudrais avoir 2 colonnes dans la listbox en gardant cette structure
comment modifier cette formule?
merci de votre aide
a bientôt

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
18 nov. 2012 à 22:32
bonjour surplus,

Merci à Mytå d'avoir donné le principe et en collant à ton point de départ je te propose :

Dim r As Long
    BD.Clear
    For r = 2 To 10000
        BD.AddItem Feuil2.Cells(r, 1)
        BD.List(BD.ListCount - 1, 1) = Feuil2.Cells(r, 2)
        BD.List(BD.ListCount - 1, 2) = Feuil2.Cells(r, 3)
        If Feuil2.Cells(r + 1, 1) = "" Then Exit For
    Next r
1
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
19 nov. 2012 à 00:31
bonjour
merci a tous les 2 pour votre aide
ça marche et je pense avoir compris
à bientôt
0
michelbr Messages postés 9 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 28 mars 2013
19 févr. 2013 à 08:01
Colonnes non contigües

J'avais un petit problème que je n'arrivais pas à résoudre. Je voulais, dans ma listbox, les colonnes c, d et F. J'avais défini 3 colonnes dans les propriétés de ma listbox mais j'avais beau mettre tout ce que je voulais dans ma macro, cela m'affichait les colonnes c, d et E...

J'ai résolu ce problème en utilisant l'option de largeur de colonne de Mytå et cela marche parfaitement. J'ai utilisé : ListBox1.ColumnWidths = "120;100;0;40"
En mettant la colonne E à zéro, j'ai pu masquer cette colonne et avoir ma colonne F.

Voici la totalité de ma macro :

'définit 4 colonnes dans ma listbox, mais n'affiche que les colonnes 1,2,4
ListBox1.ColumnCount = 4
ListBox1.ColumnWidths = "120;100;0;40"

'efface les variables de ma listbox
Me.ListBox1.Clear

'trie le contenu de mon fichier
With Sheets("SELECTIONS")
.Range("c1").Sort Key1:=.Range("c2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'définit les zones de ma listbox, mais en l'occurence, j'aurais pu simplement mettre "c2:f900"
ListBox1.List = .Range("c2:d900", "f2:f900").Value

End With
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 949
18 nov. 2012 à 22:26
Salut le forum

Le principe de base
Référence : https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-G

Private Sub UserForm_Initialize()
    Dim i As Byte, j As Byte
    
    'Définit le nombre de colonnes dans la ListBox
    ListBox1.ColumnCount = 7
    
    '---
    'Définit la largeur des colonnes d'une ListBox:
    'Par défaut, la largeur des colonnes est de 72 points
    '(72 points = 1 pouce)
    ListBox1.ColumnWidths = "50;80;50;60;50;70;50"     
        '---
        'Il est aussi possible de définir la dimension des colonnes en centimètres
        'ListBox1.ColumnWidths = "2 cm; 1,5 cm ......" 
        '---
    '---
    
    For i = 1 To 20
        'Ajoute une ligne et insère une donnée dans la colonne de gauche
        ListBox1.AddItem "Ligne" & i
        
        'Ajoute des données dans les colonnes de droite
        For j = 1 To 7
        ListBox1.List(ListBox1.ListCount - 1, j) = i & j
        Next j
        
    Next i
End Sub

Mytå
0