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étrer
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
Aprè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
   '************************************************************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
.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.
Ensuite nous passons au remplissage de la première colonne sinon si vous procédez autrement une erreur est répertoriée.
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)
la variable Counter sert d'incrémentation des lignes. elle est toujours initialisée à 1
Enfin, nous remplissons le reste des colonnes
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
Etant 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.
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.
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 Sub
voici donc le module complet
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
merci