Sub Maximum()
Dim d As Object, tablo, i&, x$
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
With Feuil1 'CodeName de la feuille
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
With .[A1].CurrentRegion
'---liste des maxima---
tablo = .Resize(, 3) 'matrice, plus rapide
For i = 2 To UBound(tablo)
x = tablo(i, 1) & Chr(1) & tablo(i, 2)
d(x) = IIf(tablo(i, 3) > d(x), tablo(i, 3), d(x))
Next i
'---affectation des maxima au tableau resu---
ReDim resu(1 To UBound(tablo), 1 To 1)
resu(1, 1) = .Cells(1, 4)
For i = 2 To UBound(tablo)
x = tablo(i, 1) & Chr(1) & tablo(i, 2)
resu(i, 1) = d(x)
Next
'---restitution sur la 4ème colonne---
.Columns(4) = resu
End With
End With
End Sub