Somme de produit présent dans une base d'un TCD

Bonjour,

Voilà, j'aurais besoin d'aide concernant un fichier excel.

Je dispose d'une base où est répétée plusieurs fois un même produit.

Dans un TCD, je cherche à avoir la somme de produit présents dans ma base mais le TCD ne me donne que le nombre de produit et donc un nombre exhorbitant alors que je m'attends à un chiffre 3 par exemple, il me renvoit 208.

Ce que je voudrais, c'est par ligne de produit/couleur, obtenir la somme de produit/UG valeur.

Par exemple, dans le fichier joint, la ligne de produit/couleur "AFRICA FASHIONBLEU/VERT", on obtient 3 produit/UG valeur, c'est le chiffre que j'attend; mais le TCD donne le nombre de ligne présent (21) et non la somme (3).

Pourriez-vous m'aider svp ? Je vous joint le fichier au cas où.

Merci beaucoup pour votre aide.

48test.zip (114.10 Ko)

Bonjour. Bienvenue

Pour satisfaire au fonctionnement de ce Forum, merci d'éditer ton message et de modifier le titre en mettant un titre en rapport avec ton sujet.

Par ailleurs, ton fichier n'est pas joint.

Cordialement

Merci Amadéus

Bonsoir

Un essai avec une formule matricielle en H4 à incrémenter vers le bas (Validation avec les 3 touches Ctrl+Maj+Entrée)

=SOMME((FREQUENCE(SI($A$2:$A$7391="";"";SI(SOUS.TOTAL(3;DECALER($A$2;LIGNE($A$2:$A$7391);))*($D$2:$D$7391=$G4);EQUIV($A$2:$A$7391;$A$2:$A$7391;0)));LIGNE($A$2:$A$7391))>0)*1)

Attention le calcul prends de 2 à 3mn et le fichier monte à 1 MO..

Mettre le calcul "sur ordre" pour plus de commodités avant de coller et d'incrémenter la formule.

Cordialement

67test.zip (122.79 Ko)

Salut le forum

Il reste toujours la posibilité de le faire par code VBA

Sub Extraction()
Dim Dico1 As Object, Dico2 As Object
Dim PlageA, PlageB, LstItem
Dim i As Long, k As Long

[G4].CurrentRegion.Offset(2).Clear

  Set Dico1 = CreateObject("Scripting.Dictionary")

  PlageA = Range("D2:D" & [a65000].End(xlUp).Row).Value
  PlageB = Range("A2:A" & [a65000].End(xlUp).Row).Value

For Each LstItem In PlageA
  Dico1(LstItem) = 1
Next LstItem

[G4].Resize(Dico1.Count) = Application.Transpose(Dico1.keys)

For Each LstItem In Dico1.keys
  Set Dico2 = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(PlageA)
      If PlageA(i, 1) = LstItem Then Dico2(PlageB(i, 1)) = 1
    Next i

    [H4].Offset(k, 0) = Dico2.Count
    k = k + 1

Next LstItem

With [G4]
  With .Resize(Dico1.Count, 2)
    .Sort Key1:=Range("G4"), Order1:=xlAscending, Header:=xlNo
        With .Borders
          .LineStyle = xlContinuous
          .Weight = xlThin
          .ColorIndex = 1
        End With
     .Borders(xlInsideHorizontal).LineStyle = xlNone
  End With
  .Offset(Dico1.Count) = "Total"
  .Offset(Dico1.Count, 1).Formula = "=Sum(" & [H4].Address & ":" & [H4].Offset(Dico1.Count - 1).Address & ")"
  With .Offset(Dico1.Count).Resize(1, 2).Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = 1
  End With
End With

Set Dico1 = Nothing
Set Dico2 = Nothing

End Sub

Mytå

Bonjour Briska972 , Mytå , Forum

"Y a pas photo" . La solution VBA est imparable!!

Cordialement

Amadéus a écrit :

Bonjour Briska972 , Mytå , Forum

"Y a pas photo" . La solution VBA est imparable!!

Cordialement

Mais un grand merci à vous, vous ne savez même pas à quel point vous m'avez aidé là !!!! Ca marche à merveille et j'en suis très contente, MERCI MERCI milles fois !

Ce site est merveilleux, je le recommenderais et je serais où aller au besoin aussi.

Cordialement

Rechercher des sujets similaires à "somme produit present base tcd"