Bonjour,
Une réponse VBA pour travailler avec un TCD.
Cdlt.
Public Sub Main()
Dim wb As Workbook
Dim wsData As Worksheet, wsTable As Worksheet
Dim tbl As Variant, arr() As Variant
Dim lo As ListObject
Dim lastCol As Long, lastRow As Long, I As Long, J As Long, k As Long
Dim r As Range
Set wb = ThisWorkbook
Set wsData = wb.Worksheets("Onglet 1")
Set wsTable = wb.Worksheets("Onglet 2")
Set lo = wsTable.Range("t_Données").ListObject
With lo
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
Set r = .InsertRowRange.Cells(1)
End With
With wsData
lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
tbl = .Cells(1).Resize(lastRow, lastCol)
End With
For I = 2 To UBound(tbl)
For J = 3 To UBound(tbl, 2)
If tbl(I, J) <> "" Then
ReDim Preserve arr(4, k + 1)
arr(0, k) = tbl(I, 1)
arr(1, k) = tbl(I, 2)
arr(2, k) = CLng(tbl(1, J))
arr(3, k) = tbl(I, J)
k = k + 1
End If
Next J
Next I
If k > 0 Then r.Resize(k, 4).Value = Application.Transpose(arr)
wsTable.PivotTables(1).RefreshTable
End Sub