Sub TriMax()
Dim Dico1, Dico2, TabPuits, TabAge, TabFin()
Dim DerL As Long
Set Dico1 = CreateObject("Scripting.Dictionary")
Set Dico2 = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Worksheets("Feuil1")
DerL = .Range("A" & Rows.Count).End(xlUp).Row
TabPuits = .Range("A2:A" & DerL)
For i = LBound(TabPuits) To UBound(TabPuits)
Dico1(TabPuits(i, 1)) = ""
Next
For Each Puits In Dico1
.Range("A1:C" & DerL).AutoFilter Field:=1, Criteria1:=Puits
TabAge = .Range("A2:c" & DerL).SpecialCells(xlVisible)
For i = LBound(TabAge) To UBound(TabAge)
If Dico2.Exists(TabAge(i, 2)) Then
If TabAge(i, 3) > Dico2(TabAge(i, 2)) Then Dico2(TabAge(i, 2)) = TabAge(i, 3)
Else
Dico2(TabAge(i, 2)) = TabAge(i, 3)
End If
Next
For Each Age In Dico2
Ind = Ind + 1
ReDim Preserve TabFin(1 To 3, 1 To Ind)
TabFin(1, Ind) = Puits
TabFin(2, Ind) = Age
TabFin(3, Ind) = Dico2(Age)
Next
Dico2.RemoveAll
.Range("A1:C" & DerL).AutoFilter
Next
.Range("E2").Resize(UBound(TabFin, 2), UBound(TabFin, 1)) = Application.Transpose(TabFin)
End With
Application.ScreenUpdating = True
End Sub