Option Explicit
Private Sub Worksheet_Activate()
   Dim Dico As Dictionary, Données As Collection, NbEmpl As Long, CMax As Long, LMax As Long, _
      TTit(), TRés(), Réf As SsGr, Emp As SsGr, L As Long, SCn As SeriesCollection, _
      LOt As ListObject, Rng As Range, C As Long, AdrEmpl As String, S As Series
Rem. ——— Élaboration des tableaux dynamiques à verser comme résultats.
   Set Dico = DicInvent(Feuil1, 8, 2): NbEmpl = Dico.Count: CMax = NbEmpl + 1
   Set Données = Gigogne(Null, 2, 8): LMax = Données.Count
   ReDim TTit(1 To 1, 1 To CMax), TRés(1 To LMax, 1 To CMax)
   TTit(1, 1) = "Référence": VerserEntêtes TTit, Dico
   For Each Réf In Gigogne(Feuil1, 2, 8)
      L = L + 1
      TRés(L, 1) = Réf.ID
      For Each Emp In Réf.Co
         If Dico.Exists(Emp.ID) Then TRés(L, Dico(Emp.ID)) = Emp.Count
         Next Emp, Réf
Rem. ——— Suppression des séries, lignes et colonnes en trop.
   Set SCn = ChartObjects(1).Chart.SeriesCollection
   While LMax < SCn.Count: SCn(LMax + 1).Delete: Wend
   Set LOt = Me.ListObjects(1)
   While LOt.ListRows.Count > LMax: LOt.ListRows(LMax + 1).Delete: Wend
   While LOt.ListColumns.Count > CMax: LOt.ListColumns(CMax + 1).Delete: Wend
Rem. ——— Versement des résultats.
   LOt.HeaderRowRange.Resize(, CMax).Value = TTit
   LOt.DataBodyRange.Resize(LMax, CMax).Value = TRés
Rem. ——— Correction des séries.
   Set Rng = LOt.HeaderRowRange
   For C = 2 To CMax: Dico(TRés(1, C)) = C: Next C
   NbEmpl = Rng.Columns.Count - 1
   AdrEmpl = Rng(1, 2).Resize(, NbEmpl).Address(True, True, xlA1, True)
   For L = 1 To UBound(TRés, 1)
      Set Rng = LOt.ListRows(L).Range
      If L <= SCn.Count Then Set S = SCn(L) Else Set S = SCn.Add(Rng(1, 1))
      S.Formula = "=SERIES(""" & TRés(L, 1) & """," & AdrEmpl & "," _
         & Rng(1, 2).Resize(, NbEmpl).Address(True, True, xlA1, True) & "," & L & ")"
      Next L
   End Sub