Sub Recap()
Dim mini#, maxi#, fin, deb, plage As Range
Dim tablo, d As Object, i&, ad1$, ad2$
'---initialisations---
Application.ScreenUpdating = False
[H20:I65536].ClearContents
mini = Application.Min([H15:J15])
maxi = Application.Max([H15:J15])
fin = Application.Match(maxi, [A:A])
If IsError(fin) Then Exit Sub
deb = Application.Match(mini - 0.0001, [A:A])
If IsError(deb) Then deb = 1
If fin = deb Then Exit Sub
Set plage = Cells(deb + 1, 2).Resize(fin - deb, 2)
'---liste des alarmes sans doublon---
tablo = plage 'pour accélérer le traitement
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
d(tablo(i, 1)) = tablo(i, 1)
Next
'---restitution et formule de calcul---
[H20].Resize(d.Count) = Application.Transpose(d.items)
ad1 = plage.Columns(1).Address(ReferenceStyle:=xlR1C1)
ad2 = plage.Columns(2).Address(ReferenceStyle:=xlR1C1)
With [I20].Resize(d.Count)
.FormulaR1C1 = "=SUMIF(" & ad1 & ",RC[-1]," & ad2 & ")"
.Value = .Value 'facultatif, supprime les formules
End With
End Sub