Listbox 2 colonnes

Résolu
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   -  
michelbr Messages postés 9 Statut Membre -
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

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
       
      bonjour
      merci a tous les 2 pour votre aide
      ça marche et je pense avoir compris
      à bientôt
      0
    2. michelbr Messages postés 9 Statut Membre
       
      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
  2. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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