Bonjour le Forum,
Je souhaiterais alimenter les items d'une zone de liste modifiable à partir de certaines colonnes d'un tableau structuré.
Pour ce faire, j'ai envisagé plusieurs solutions
1ère solution: Alimentation par variable tableau.
Ici, je déploie Listcolumns afin d'utiliser un bloc With, en lieu et place de l'écriture habituelle Range("letablo[lacolonne]")
Or, j'évite tant que possible les boucles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Option Explicit Public Sub gestion_famille_1() Dim i As Long With Sht_Famille.ListObjects("T_Famille") ReDim montablo(1 To 3, 1 To .ListRows.Count) As Variant For i = 1 To .ListRows.Count montablo(1, i) = .ListColumns("Prénom").DataBodyRange.Cells(i, 1).Value montablo(2, i) = .ListColumns("Ville").DataBodyRange.Cells(i, 1).Value montablo(3, i) = .ListColumns("Vacances").DataBodyRange.Cells(i, 1).Value Next i End With With Usf_famille With .Cbx_équipe .Clear .ColumnCount = 3 '.Width = 200 .ColumnWidths = "45;55;465" .List = Application.WorksheetFunction.Transpose(montablo) 'Valeur du combobox après sélection .TextColumn = 1 'Nombre de lignes affichées lors de la sélection .ListRows = UBound(montablo, 2) '1er item sélectionné .ListIndex = 0 End With .Show 0 End With Erase montablo End Sub
J'ai donc envisagé une astuce
2ème solution: masquer une colonne de la Combobox en lui affectant une largeur égale à 0.
Ma question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ublic Sub gestion_famille_2() With Usf_famille With .Cbx_équipe .Clear .ColumnCount = Range("T_Famille").ListObject.ListColumns.Count '.Width = 200 .ColumnWidths = "45;55;0;65" .List = Range("T_Famille").Value 'Valeur du combobox après sélection .TextColumn = 1 'Nombre de lignes affichées lors de la sélection .ListRows = Range("T_Famille").ListObject.ListRows.Count '1er item sélectionné .ListIndex = 0 End With .Show 0 End With End Sub
Sans cette astuce.
Peut-on alimenter une par une chaque colonne de la Combobox en lui affectant directement une colonne du tableau?
L'écriture
me retournat un message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part .List(,1) = Range("T_Famille[Prénom]").Value
Par avance, merci pour vos lumineuses lumières
Bonne journée à tous.
Partager