Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, d As Object, i&, n&, a, b
With [Debut].CurrentRegion
If Intersect(Target, .Cells) Is Nothing Then Exit Sub
t = .Resize(, 2) 'matrice, plus rapide
End With
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
d(t(i, 1)) = d(t(i, 1)) + Val(Replace(t(i, 2), ",", "."))
Next
n = d.Count
Application.EnableEvents = False
If n Then
a = d.keys: b = d.items
For i = 1 To n
t(i, 1) = a(i - 1)
t(i, 2) = b(i - 1)
Next
[Debut].Offset(1, 1).Resize(n).NumberFormat = "0.00" 'format nombre décimal
[Debut].Offset(1).Resize(n, 2) = t 'restitution du tableau
End If
[Debut].Offset(n + 1).Resize(Rows.Count - n - [Debut].Row, 2).Delete xlUp 'RAZ sous le tableau
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True
End Sub