Afficher plusieur colonnes dans une liste
Résolu
mathide87
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
mathide87 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
mathide87 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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 :
Merci pour votre aide :)
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 :)
A voir également:
- Afficher plusieur colonnes dans une liste
- Liste déroulante excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Déplacer une colonne excel - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
4 réponses
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.
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.
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+
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+
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
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