PORCHER
XLDnaute Occasionnel
Bonjour,
Je fais appel à vous pour résoudre un problème.
Je rempli ma listview et je souhaite copier la liste entière de ma listview sur ma feuille historique
dans un tableau structuré nommé Tableau1.
Merci de m'aider
Voici ci-dessous le code ;
Je fais appel à vous pour résoudre un problème.
Je rempli ma listview et je souhaite copier la liste entière de ma listview sur ma feuille historique
dans un tableau structuré nommé Tableau1.
Merci de m'aider
Voici ci-dessous le code ;
VB:
Sub ListView_vers_Feuille()
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim l As Integer 'déclare la variable I(Incrément)
Dim lg As Long, cl As Long, i As Long, j As Long
Dim T As Variant
Set OB = Worksheets("Bilan") 'définit l'onglet OB
Set TSB = OB.ListObjects("Tableau1")
Set R = TSB.ListColumns(1).Range.Find("")
If R Is Nothing Or TSB.ListRows.Count = 0 Then
TSB.ListRows.Add 'ajoute une ligne à TSB
LI = TSB.ListRows.Count 'définit la ligne LI (dernière ligne de TSB)
Else
LI = R.Row - TSB.HeaderRowRange.Row 'définit la ligne LI (ligne de la première occurrence trouvée moins la ligne de en-têtes de TSB)
End If
With UserFormFiltre.ListView1
lg = .ListItems.Count
cl = .ColumnHeaders.Count
ReDim T(1 To lg, 1 To cl + 1)
For i = 1 To lg
T(i, 1) = .ListItems(i).Text
For j = 1 To cl - 1
T(i, j + 1) = .ListItems(i).ListSubItems(j).Text
Next j
Next i
End With
For l = 1 To lg ' boucle sur les lignes du tableau
TSB.DataBodyRange(LI, 1 + l) = T(i, 1)
TSB.DataBodyRange(LI, 2 + l) = T(i, 2)
TSB.DataBodyRange(LI, 3 + l) = T(i, 3)
TSB.DataBodyRange(LI, 4 + l) = T(i, 4)
TSB.DataBodyRange(LI, 5 + l) = T(i, 5)
TSB.DataBodyRange(LI, 6 + l) = T(i, 6)
TSB.DataBodyRange(LI, 7 + l) = T(i, 7)
TSB.DataBodyRange(LI, 8 + l) = T(i, 8)
TSB.DataBodyRange(LI, 9 + l) = T(i, 9)
Next
End Sub