Sub Essai() 'code de JB adapté
Dim i As Long, L As Long, d As New Dictionary, dico As Dictionary, a, b(), madate As Date
Dim item, clé, clébase, indice As Long, ligne As Long
With Feuil1
L = .Range("B65536").End(xlUp).Row
.Range("B7:B" & L).Name = "ColB"
.Range("F7:F" & L).Name = "ColF"
.Range("H7:H" & L).Name = "ColH"
a = .Range("B7:K" & L)
End With
Set d = New Dictionary 'x1
For L = 1 To UBound(a) 'établissement
d(a(L, 7)) = a(L, 7)
Next
For Each item In d.Items
Set dico = New Dictionary
For L = 1 To UBound(a)
If a(L, 7) = item Then
clébase = item
clé = clébase
indice = 1
Do While dico.Exists(clé)
clé = clébase & indice
indice = indice + 1
Loop
dico(clé) = L
End If
Next
i = i + 1
ReDim Preserve b(1 To 2, 1 To i)
b(1, i) = item
clébase = item
clé = clébase
indice = 1
Do While dico.Exists(clé)
ligne = dico(clé)
madate = Date - 30
If a(ligne, 5) > madate Then b(2, i) = b(2, i) + 1
' b(2, i) = a(ligne, 4)
clé = clébase & indice
indice = indice + 1
Loop
Next
b = Application.Transpose(b)
Feuil1.[M1].Resize(UBound(b, 1), UBound(b, 2)) = b
End Sub