Option Explicit
Private Sub Worksheet_Activate()
Dim TSvg(), LS As Long, TRés(), LR As Long, M As Long
Sauvegarde ' Pour prendre en compte les données actuelles de la feuille Pointage
TSvg = [TabSvg].Value: LS = 1
ReDim TRés(1 To UBound(TSvg, 1) \ 28, 1 To 4)
Do ' Début mois
LR = LR + 1: TRés(LR, 1) = Year(TSvg(LS, 1)): TRés(LR, 2) = TSvg(LS, 1)
M = Year(TSvg(LS, 1)) * 12 + Month(TSvg(LS, 1))
Do ' Détail jour
TRés(LR, 3) = TRés(LR, 3) + TSvg(LS, 3) - TSvg(LS, 2) + TSvg(LS, 5) - TSvg(LS, 4)
TRés(LR, 4) = TRés(LR, 4) + TSvg(LS, 6)
LS = LS + 1: If LS > UBound(TSvg, 1) Then Exit Do ' Incrément ligne et sortie si dépasse dim tableau
Loop Until Year(TSvg(LS, 1)) * 12 + Month(TSvg(LS, 1)) > M ' Fin mois
Loop Until LS > UBound(TSvg, 1) ' Fin tableau
Me.ListObjects(1).DataBodyRange.Resize(LR).Value = TRés
End Sub