Bonjour,
Une première proposition.
La consolidation des données est sous forme de tableau structuré et la synthèse réalisée avec un TCD (tableau croisé dynamique).
Cdlt.
Public Sub ConsolidateData()
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim tbl As Variant, arr() As Variant
Dim lo As ListObject
Dim I As Long, J As Long, k As Long, m As Long
Set wb = ActiveWorkbook
Set wsData = wb.Worksheets("Feuille de pr?sence")
Set wsPT = wb.Worksheets("Consolidation")
Set lo = wsPT.ListObjects(1)
If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
tbl = wsData.Cells(1).CurrentRegion.Value
For I = 3 To UBound(tbl)
For J = 2 To UBound(tbl, 2) Step 2
For k = 0 To 1
If tbl(I, J + k) <> "" Then
ReDim Preserve arr(4, m + 1)
arr(0, m) = CLng(tbl(1, J)) 'date
arr(1, m) = tbl(I, 1) 'collaborateur
arr(2, m) = tbl(2, J + k) 'AM-Pm
arr(3, m) = tbl(I, J + k) 'Code activite
m = m + 1
End If
Next k
Next J
Next I
If m > 0 Then lo.InsertRowRange.Cells(1).Resize(m, 4).Value = Application.Transpose(arr)
wsPT.PivotTables(1).PivotCache.Refresh
End Sub