Option Explicit
Private Sub Worksheet_Activate()
Dim M&
Me.UsedRange.ClearContents
On Error Resume Next
For M = 1 To 12
Extraire ThisWorkbook.Worksheets(Format(DateSerial(1900, M, 1), "mmmm")), _
Me.Cells(50 * M - 49, 1)
Next M
End Sub
Private Sub Extraire(ByVal F As Worksheet, ByVal Cible As Range)
Dim Données As Collection, T(), L&, LMax&, C&, Vendeur As SsGroup, RéfArt As SsGroup
Set Données = GroupOrg(ColUti(F.[B2:C2]), 1, 2)
ReDim T(1 To 50, 1 To Données.Count * 2)
For Each Vendeur In Données
C = C + 2
T(1, C - 1) = Vendeur.Id
T(2, C - 1) = "Réf. article"
T(2, C) = "Nombre"
L = 2
For Each RéfArt In Vendeur.Contenu
L = L + 1
T(L, C - 1) = RéfArt.Id
T(L, C) = RéfArt.Count
Next RéfArt
If LMax < L Then LMax = L
Next Vendeur
Cible.Resize(LMax, C).Value = T
End Sub