Afficher plusieur colonnes dans une liste

Résolu/Fermé
mathide87 Messages postés 5 Date d'inscription mardi 12 août 2014 Statut Membre Dernière intervention 13 octobre 2014 - Modifié par pijaku le 13/10/2014 à 09:46
mathide87 Messages postés 5 Date d'inscription mardi 12 août 2014 Statut Membre Dernière intervention 13 octobre 2014 - 13 oct. 2014 à 14:31
Bonjour,
J'ai besoin d'afficher dans une liste déroulante le contenu d'un tableau qui est sur une feuille. Ce tableau de 6 colonnes est d'une longueur variable. En fouillant dans des supports de cours j'ai trouvé et adapté ce code mais toutes les infos du tableau sont affichées en une seule colonne mois je voudrais que chaque colonne du tableau soit dans une colonne de la liste.
Voici le code :

Private Sub CommandButton2_Click()

Dim rng As Range
Dim ligne As Range

With ThisWorkbook.Worksheets("GAE")
    .Activate
    Set rng = .Range("X4").CurrentRegion
    Set rng = .Range("X5:AC" & rng.Rows.Count + 5)
    lstMatériel.Clear
    For Each ligne In rng.Rows
        If Cells(ligne.Row, 24) <> "" Then
            lstMatériel.AddItem Cells(ligne.Row, 24) & " " & Cells(ligne.Row, 25)
        Else
            Exit For
        End If
    Next ligne
End With

End Sub


Merci pour votre aide :)

4 réponses

Mike-31 Messages postés 18345 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 novembre 2024 5 104
Modifié par Mike-31 le 13/10/2014 à 09:35
Bonjour,

Il faut utiliser une Listbox, commence par la dessiner sur ta feuille à partir de la barre ActiveX

dans les propriétés de ta feuille colle ce code qui affichera le contenu des colonnes A à F, à adapter

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
k = 0
With Sheets("GAE")
For I = 2 To .[A65000].End(xlUp).Row
If .Cells(I, 13) < 1 Then
Me.ListBox1.AddItem
Me.ListBox1.List(k, 0) = .Cells(I, 1)
Me.ListBox1.List(k, 0) = .Cells(I, 2)
Me.ListBox1.List(k, 0) = .Cells(I, 3)
Me.ListBox1.List(k, 0) = .Cells(I, 4)
Me.ListBox1.List(k, 1) = .Cells(I, 5)
Me.ListBox1.List(k, 2) = .Cells(I, 6)
k = k + 1
End If
Next I
End With
End Sub

ou celui ci en fonction du choix donné à l'actualisation

Private Sub Worksheet_Activate()
k = 0
With Sheets("GAE")
For I = 2 To .[A65000].End(xlUp).Row
If .Cells(I, 13) < 1 Then
Me.ListBox1.AddItem
Me.ListBox1.List(k, 0) = .Cells(I, 1)
Me.ListBox1.List(k, 0) = .Cells(I, 2)
Me.ListBox1.List(k, 0) = .Cells(I, 3)
Me.ListBox1.List(k, 0) = .Cells(I, 4)
Me.ListBox1.List(k, 1) = .Cells(I, 5)
Me.ListBox1.List(k, 2) = .Cells(I, 6)
k = k + 1
End If
Next I
End With
End Sub
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
mathide87 Messages postés 5 Date d'inscription mardi 12 août 2014 Statut Membre Dernière intervention 13 octobre 2014
Modifié par mathide87 le 13/10/2014 à 12:06
Bonjour Mike31,

J'ai essayé ton code mais je ne sais pas si ca marche. La liste ne se remplie pas. Peux tu me dire ce qu'il faux que j'adapte pour lui dire que la liste commence en X5 et ce finie en colonne AC ligne indéterminée.
Petite précision cette liste est dans un UserForm qui est ouvert par un bouton à partir de la feuille Excel. Le code pour remplir la liste est exécuté lorsque je click sur un bouton de la UserForm. J'envisage ensuite de faire écrire le contenu de la liste sélectionnée dans un endroit de la feuille Excel.

A+
0
Mike-31 Messages postés 18345 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 novembre 2024 5 104
13 oct. 2014 à 14:19
Re,

on va faire plus simple en programmant uniquement le nombre de colonne à prendre en compte et la matrice
code dans les propriétés de l'USERFORM

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 6
ListBox1.RowSource = "X5:AC" & [X65000].End(xlUp).Row
End Sub

https://www.cjoint.com/c/DJnow26nIMm

0
mathide87 Messages postés 5 Date d'inscription mardi 12 août 2014 Statut Membre Dernière intervention 13 octobre 2014
13 oct. 2014 à 14:31
Merci Mike-31 tu es formidable ça marche du toner et désolé pour les cafouillages de ce matin j'étais un peu stressé. :-)
0