Sub Macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dico As Object 'déclare la variable dico (Dictionary)
Dim sd As Variant 'déclare la variable sd (Sans Doublons)
Dim x As Integer 'déclare la variable x (incrément)
Set o = Sheets("Feuil1") 'déninit l'onglet o
Set pl = o.Range("A2:A" & o.Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
Set dico = CreateObject("Scripting.Dictionary") 'définit la variable dico
o.Range("G1").Value = "Référence" 'titre en G1
o.Range("H1").Value = "Somme" 'titre en H1
For Each cel In pl 'boucle sur toutes les cellules éditées cel de la plge pl
dico(cel.Value) = "" 'alimente le dictionaire dico
Next cel 'prochaine cellule de la boucle
sd = dico.keys 'récupère les valeurs sans doublon
For x = 0 To UBound(sd, 1) 'boucle : sur toutes les valeurs du tableau sd
o.Cells(x + 2, 7).Value = sd(x) 'place la référence dans la colonne G
o.Cells(x + 2, 8).Value = Application.WorksheetFunction.SumIf(pl, sd(x), pl.Offset(0, 3)) 'place la somme dans la colonne H
Next x 'prochaine valeur de la boucle
End Sub