Private Sub Worksheet_Activate()
Dim d As Object, tablo, resu(), i&, x$, n&, nn&
Set d = CreateObject("Scripting.Dictionary")
tablo = Sheets("BDD").[A1].CurrentRegion.Resize(, 3)
ReDim resu(1 To UBound(tablo), 1 To 3)
For i = 2 To UBound(tablo)
x = tablo(i, 3)
If x <> "" Then
If Not d.exists(x) Then
n = n + 1
d(x) = n 'mémorise la ligne
resu(n, 1) = tablo(i, 1) 'date
resu(n, 3) = "=HYPERLINK(""mailto:" & x & """,""" & x & """)" 'formule
End If
nn = d(x) 'récupère la ligne
resu(nn, 2) = resu(nn, 2) + Val(Replace(tablo(i, 2), ",", ".")) 'montant
End If
Next
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] '1ère cellule de destination
If n Then .Resize(n, 3) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, 3).ClearContents 'RAZ en dessous
End With
End Sub