Sub MaxMois()
Dim dico As Object, dico2 As Object, dico3 As Object, Tablo, TabFin, i As Long, j As Long, x As Long
Dim MaDate As String
Set dico = CreateObject("Scripting.Dictionary")
Set dico2 = CreateObject("Scripting.Dictionary")
Set dico3 = CreateObject("Scripting.Dictionary")
With Worksheets("Feuil1")
Tablo = .Range("A2:E" & .Range("E" & Rows.Count).End(xlUp).Row)
End With
'transformation des données colonne E en dates exploitables
For j = LBound(Tablo) To UBound(Tablo)
If Tablo(j, 5) <> "NULL" Then Tablo(j, 5) = CDbl(CDate(Left(Tablo(j, 5), 19))) 'on transforme les dates en valeurs
Next
For i = LBound(Tablo) To UBound(Tablo)
dico(Tablo(i, 1)) = dico(Tablo(i, 1)) + 1
If Tablo(i, 5) <> "NULL" Then
dico2(Tablo(i, 1)) = Tablo(i, 5)
Else
dico2(Tablo(i, 1)) = ""
End If
Next
x = 0
For Each clé In dico
If dico2(clé) <> "" Then
MaDate = Format(dico2(clé), "mmmm") & " " & Format(dico2(clé), "yyyy")
If dico(clé) > dico3(MaDate) Then dico3(MaDate) = dico(clé)
End If
Next
ReDim TabFin(1 To dico3.Count, 1 To 3)
x = 0
For Each clé In dico3.keys
x = x + 1
TabFin(x, 1) = Split(clé, " ")(0)
TabFin(x, 2) = Split(clé, " ")(1)
TabFin(x, 3) = dico3(clé)
Next
With Worksheets("Feuil2")
.Range("C7").Resize(UBound(TabFin, 1), UBound(TabFin, 2)) = TabFin
End With
End Sub