j'ai débuté mon apprentissage au vba(2017) par ce forum que je remercie énormément. ceux qui m'ont beaucoup inspirés : Pierre Fauconnier, Boisgonthier, Patrick Toulon que je salue au passage.
Peut être que le sujet a été déja abordé... je voudrais laisser une contribution pour ceux qui seront intéressés.
c'est quoi la listview : La ListView contrôle est un ItemsControl dérivé de ListBox. En règle générale, ses éléments sont membres d’une collection de données et sont représentés en tant qu’objets ListViewItem. vous pouvez apprendre plus ici :https://silkyroad.developpez.com/VBA/ListView/
pour remplir donc une listview, nous allons d'abord la paramétrerAprès le paramétrage, nous procédons au remplissage des entêtes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 With ListView1 '******************************** paramétrage de la listview With Listview1 .View = lvwReport .FullRowSelect = True .LabelEdit = lvwManual .Gridlines = True End With.Il est convenable d'utiliser les tableaux structurés car cela facilite l'écriture et c'est ce qui est recommandé. pour le dimensionnement des entêtes, j'utilise la taille des colonnes stockée dans la variable colonne. c'est plus pratique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 '************************************************************Entete de la listview .ColumnHeaders.Clear Set Entete = Feuil1.ListObjects(1).HeaderRowRange For Each Colonne In Entete .ColumnHeaders.Add , , Colonne.Value, Colonne.Width Next '***************************************************************fin
Ensuite nous passons au remplissage de la première colonne sinon si vous procédez autrement une erreur est répertoriée.la variable Counter sert d'incrémentation des lignes. elle est toujours initialisée à 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 .ListItems.Clear Counter = 1 For Ligne = 1 To UBound(TabList) 'premiere colonne .ListItems.Add , , TabList(Ligne, 1)
Enfin, nous remplissons le reste des colonnesEtant donné que la première colonne est déjà renseignée, c'est pour quoi la boucle des colonnes du tableau commence à partir de 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For Col = 2 To UBound(TabList, 2) 'reste des colonnes .ListItems(Counter).ListSubItems.Add , , TabList(Ligne, Col) Next Counter = Counter + 1 Next
Dans la pratique,j'utilise une variable tableau pour stocker le tableau structuré se trouvant sur la feuille que j'initialise au lancement de l'userform. cette variable est donc appelée et est chargée dans la procédure de remplissage.voici donc le module complet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub UserForm_Initialize() TabList = Feuil1.ListObjects(1).DataBodyRange.Value 'transfert de la plage de données dans la variable tableau Call ListvRemplissage 'appel de la procédure End Submerci
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
36
37
38
39
40
41 Option Explicit Dim TabList() Dim Ligne As Integer, Col As Integer, Counter As Integer Dim Position As Integer Private Sub UserForm_Initialize() TabList = Feuil1.ListObjects(1).DataBodyRange.Value2 'transfert de la plage de données dans la variable tableau Call ListvRemplissage 'appel de la procédure End Sub Sub ListvRemplissage() Dim Colonne As Range, Entete As Range With ListView1 '******************************** paramétrage de la listview .View = lvwReport .FullRowSelect = True .LabelEdit = lvwManual .Gridlines = True ' ******************************************************* fin '************************************************************Entete de la listview .ColumnHeaders.Clear Set Entete = Feuil1.ListObjects(1).HeaderRowRange For Each Colonne In Entete .ColumnHeaders.Add , , Colonne.Value, Colonne.Width Next '***************************************************************fin '**********************************************************remplissage de la listview .ListItems.Clear Counter = 1 For Ligne = 1 To UBound(TabList) 'premiere colonne .ListItems.Add , , TabList(Ligne, 1) For Col = 2 To UBound(TabList, 2) 'reste des colonnes .ListItems(Counter).ListSubItems.Add , , TabList(Ligne, Col) Next Counter = Counter + 1 Next '****************************************************** fin End With End Sub
Partager