Private Sub Worksheet_Change(ByVal Target As Range)
Dim TVal As Variant, TIdx() As Long, LMax As Long, L As Long, CMax As Long, C As Long, ArgB As String
Dim TRés() As Variant, Ls As Long, N As Long, Le As Long, Nbr As Long, Fini As Boolean
If Intersect(Me.[TabAnim], Target) Is Nothing Then Exit Sub
TVal = Me.[TabAnim].Value: LMax = UBound(TVal, 1): CMax = UBound(TVal, 2)
With New Indexeur
.Init TIdx, 0, LMax * CMax - 1
While .Actif
If .BChange Then ArgB = TVal(.B \ CMax + 1, .B Mod CMax + 1)
.ASupB = TVal(.A \ CMax + 1, .A Mod CMax + 1) > ArgB: Wend: End With
ReDim TRés(1 To LMax * CMax, 1 To 2) As Variant
Ls = 1: N = 1: Le = TIdx(1)
Do: TRés(Ls, 1) = TVal(Le \ CMax + 1, Le Mod CMax + 1): Nbr = 1
Do: N = N + 1: Fini = N > UBound(TIdx): If Fini Then Exit Do
Le = TIdx(N): If TVal(Le \ CMax + 1, Le Mod CMax + 1) <> TRés(Ls, 1) Then Exit Do
Nbr = Nbr + 1: Loop
TRés(Ls, 2) = Nbr: If Fini Then Exit Do
If TRés(Ls, 1) <> "" Then Ls = Ls + 1
Loop
Me.[Récap].Resize(LMax * CMax).ClearContents
Me.[Récap].Resize(Ls).Value = TRés
End Sub