Comment faire la somme d'une liste suivant 2 critères

zerony

XLDnaute Nouveau
Bonjour, j'ai une liste (en fait 40000 lignes dont beaucoup sont redondantes):
qui quoi combien
a rtt 5
a rtt 5
a cp 10
b cp 6
b cp 4
b rtt 10

Je souhaiterai avoir une fusion de ces données qui donnerai:
qui quoi combien
a rtt 10
a cp 10
b rtt 10
b cp 10

La finalité est d'exploiter cette nouvelle liste épurée avec des formules (un TCD ne me va pas). Savez vous comment y parvenir ?
Par avance merci.
Crdlt.
 

zerony

XLDnaute Nouveau
Re : Comment faire la somme d'une liste suivant 2 critères

En fait, j'ai besoin de faire la somme des durées (colonne F) a chaque changement de matricule et incident (A et E)
je n'ai pas besoin des autres informations.
Je le faisais par macro, mais je me dis qu'il doit bien exister une fonction simple qui permet de sommer une liste.
L'objectif étant que ces données seront attaquées apres avec des formules. Si ces sommes sont déjà faites sur cette feuille, ca m'économise 6000 sommeprod sur une autre feuille de résultat
fichier joint est un extrait de la bdd.
merci
Crdt/
 

Pièces jointes

  • exemple.xlsx
    25.9 KB · Affichages: 60
  • exemple.xlsx
    25.9 KB · Affichages: 65
  • exemple.xlsx
    25.9 KB · Affichages: 98

pijaku

XLDnaute Occasionnel
Re : Comment faire la somme d'une liste suivant 2 critères

Bonjour,
40000 lignes à traiter, s'il y a beaucoup de qui, avec j'imagine 7-8 quoi, j'ai des doutes sur une solution par formule.

Je vous propose une macro qui, si les données sont placées dans les colonnes A, B et C (A = qui, B = quoi et C = combien) à partir de la deuxième ligne, vous restitue vos données combinées en colonnes E, F et G. Attention donc de n'avoir pas déjà des données dans ces colonnes. Le cas échéant, travaillez sur une copie de votre fichier.....
Cette procédure s'est largement inspirée de Mr Boisgontier et notamment de son travail sur l'objet Dictionary (voir : Objet dictionary)
Le code :
Code:
Sub Somme2Critères()
Dim Dico As Object, T_In(), i As Long, c, T_Out()

  Set Dico = CreateObject("Scripting.Dictionary")
  T_In = Range("A2:C" & Range("A" & Rows.Count).End(xlUp).Row)
  For i = LBound(T_In) To UBound(T_In)
    Dico(T_In(i, 1) & "µ" & T_In(i, 2)) = Dico(T_In(i, 1) & "µ" & T_In(i, 2)) + T_In(i, 3)
  Next i
  i = 1
  ReDim T_Out(1 To Dico.Count, 1 To 2)
  For Each c In Dico.keys
    T_Out(i, 1) = Split(c, "µ")(0)
    T_Out(i, 2) = Split(c, "µ")(1)
    i = i + 1
  Next c
  Range("E2").Resize(UBound(T_Out, 1), UBound(T_Out, 2)) = T_Out
  Range("G2").Resize(Dico.Count, 1) = Application.Transpose(Dico.items)
End Sub
 

chris

XLDnaute Barbatruc
Re : Comment faire la somme d'une liste suivant 2 critères

Bonjour

Dans ta question, on ne sait pas si cela doit se faire en respectant l'ordre initial ou bien comme le propose Legolas.

Par ailleurs un TCD est exploitable donc tout cela demande clarification de ta part.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 902
Membres
103 982
dernier inscrit
krakencolas