Calcul d'une somme pour chaque objet

gibson92

XLDnaute Junior
Bonjour,

Sur le fichier excel ci joint j'aimerai calculer la somme des valeurs pour chaque référence, quelqu'un aurait-il une idée
merci par avance
 

Pièces jointes

  • exemple.xlsx
    10 KB · Affichages: 46
  • exemple.xlsx
    10 KB · Affichages: 51
  • exemple.xlsx
    10 KB · Affichages: 44

Robert

XLDnaute Barbatruc
Repose en paix
Re : Calcul d'une somme pour chaque objet

Bonjour le fil, bonjour le forum,

Un proposition VBA :
Code:
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
 

laetitia90

XLDnaute Barbatruc
Re : Calcul d'une somme pour chaque objet

bonjour tous:):):):):):):)
un autre code vba

Code:
Sub es()
Dim m As Object, c As Range
Set m = CreateObject("Scripting.Dictionary")
For Each c In Range("a2", Cells(Rows.Count, "a").End(xlUp))
m(c.Value) = m(c.Value) + 1
m(c.Value) = m(c.Value) + c.Offset(0, 3) - 1
Next c
[e2].Resize(m.Count, 1) = Application.Transpose(m.keys)
[f2].Resize(m.Count, 1) = Application.Transpose(m.items)
End Sub
 

Statistiques des forums

Discussions
312 611
Messages
2 090 219
Membres
104 452
dernier inscrit
hamzamounir