Listbox 2 colonnes [Résolu/Fermé]

Signaler
Messages postés
640
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
28 juillet 2019
-
Messages postés
9
Date d'inscription
jeudi 15 novembre 2012
Statut
Membre
Dernière intervention
28 mars 2013
-
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

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 305
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
640
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
28 juillet 2019
4
bonjour
merci a tous les 2 pour votre aide
ça marche et je pense avoir compris
à bientôt
Messages postés
9
Date d'inscription
jeudi 15 novembre 2012
Statut
Membre
Dernière intervention
28 mars 2013

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
Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
837
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å