Private Sub WorkSheet_Activate()
Dim tablo, ncol%, i&, x$, c As New Collection, n&, resu(), nn&, j%
With Sheets("Feuil1") 'à adapter
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
tablo = .Range("A1:AW" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
ncol = UBound(tablo, 2)
On Error Resume Next
For i = 2 To UBound(tablo)
x = LCase(tablo(i, 2) & Chr(1) & tablo(i, 4) & Chr(1) & tablo(i, 8) & Chr(1) & tablo(i, 12))
Err = 0
c.Add i, x 'mémorise la ligne
If Err Then If tablo(i, 1) < tablo(c(x), 1) Then c.Remove x: c.Add i, x 'teste la date
Next i
On Error GoTo 0
'---tableau des résultats---
n = c.Count
If n Then
ReDim resu(1 To n, 1 To ncol)
For i = 1 To n
nn = c.Item(i)
For j = 1 To ncol
resu(i, j) = tablo(nn, j)
Next j, i
End If
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de restitution, à adapter
If n Then .Resize(n, ncol) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
Columns.AutoFit 'ajuste les largeurs
End Sub