Synthèse donnée tableau Excel

Bonjour,

Je me permets de vous solliciter afin de trouver une solution à mon problème.

J'ai le tableau suivant dans lequel mon client peut acheter le même produit plusieurs fois dans l'année à un prix et une quantité différente.

Je souhaite savoir suivant le référence souhaitée, quel client, quel quantité et quel prix il a obtenu.

Par exemple, dans le fichier joint, si je rentre la référence 23, il me donne les client qui ont consommé cette référence, leur quantité additionné (uniquement si le prix est identique) et le prix.

Merci par avance de votre aide

24forum.xlsx (10.15 Ko)

Bonjour,

Une proposition à étudier.

Cdlt.

31forum.xlsx (21.64 Ko)

Bonjour Jean Eric

Tout d'abord merci pour votre réponse très rapide.

La solution me paraît pas mal,

MAIS

le gros soucis est que je ne maitrise pas le tableau croisée dynamique.

Je vais essayer de m'exercer avant

Merci encore

Re,

C'est donc l'occasion de te pencher sur la chose.

Bonne fêtes de fin d'année.

Cdlt.

Bonjour Jean Eric,

Je bloque sur plusieurs points.

Est ce qu'il est possible de détailler ta procédure s'il te plaît.

Je n'arrive pas à mette un filtre dans la colonne "quantité"

Je n'arrive pas à ajouter une colonne

Merci d'avance

Bonjour,

1 - Tu ne peux pas directement filtrer la colonne Quantité : C'est un champ de valeurs (Somme de). Il faut passer par les champs de lignes Client ou Prix unitaire. Et savoir quel filtre tu veux effectuer...

2 - Quelle colonne veux tu ajouter ?

Cdlt.

Bon Noël à tous

Tes données en Feuil1 à partir de A1 sans lignes vides

Restitution en feuil2

Option Explicit
Sub test()
Dim a, w(), x, y, i As Long, ii As Long, iii As Long, n As Long, t As Long
    a = Sheets("Feuil1").Range("a1").CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(a, 1)
            If Not .exists(a(i, 2)) Then
                Set .Item(a(i, 2)) = _
                CreateObject("Scripting.Dictionary")
                .Item(a(i, 2)).CompareMode = 1
            End If
            If Not .Item(a(i, 2)).exists(a(i, 1)) Then
                Set .Item(a(i, 2))(a(i, 1)) = _
                CreateObject("Scripting.Dictionary")
            End If
            If Not .Item(a(i, 2))(a(i, 1)).exists(a(i, 5)) Then
                ReDim w(1 To 3)
                w(1) = a(i, 1): w(3) = a(i, 5)
            Else
                w = .Item(a(i, 2))(a(i, 1))(a(i, 5))
            End If
            w(2) = w(2) + a(i, 4)
            .Item(a(i, 2))(a(i, 1))(a(i, 5)) = w
        Next
        x = .keys: y = .items
    End With
    Application.ScreenUpdating = False
    'Restitution et mise en forme
    With Sheets("Feuil2")
        .Cells.Clear
        For i = 0 To UBound(y)
            n = n + 1 + t
            t = 0
            With .Cells(n, 1)
                .Resize(, 4).Value = Array("Référence", "Client", "Quantité", "Prix")
                For ii = 0 To y(i).Count - 1
                    For iii = 0 To y(i).items()(ii).Count - 1
                        t = t + 1
                        With .Offset(t)
                            If t = 1 Then .Value = x(i)
                            .Offset(, 1).Resize(, 3).Value = y(i).items()(ii).items()(iii)
                        End With
                    Next
                Next
                With .CurrentRegion
                    .Font.Name = "calibri"
                    .BorderAround Weight:=xlThin
                    .Borders(xlInsideVertical).Weight = xlThin
                    .VerticalAlignment = xlCenter
                    .Columns("a:b").HorizontalAlignment = xlCenter
                    .Columns("d").NumberFormat = "#,##0.00 $"
                    With .Rows(1)
                        .Font.Size = 11
                        .BorderAround Weight:=xlThin
                        .Interior.ColorIndex = 36
                        .HorizontalAlignment = xlCenter
                    End With
                End With
            End With
            n = n + 1
        Next
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub

klin89

Bonjour Eric,

Je me permets de revenir vers toi suivant ma demande.

J'ai essayé depuis plusieurs jours d'éditer le même tableau que toi mais en vain.

Je n'arrive pas à placer la colonne "Prix" et y ajouter un filtre.

De même, comment as tu créer "Champs1"

Merci de ton aide

Cordialement

11forum1.xlsx (127.47 Ko)

Bonjour,

Je te propose ce complément d'informations.

A te relire.

Cdlt.

20forum-1.xlsx (34.73 Ko)

Merci pour cet élément de réponse.

Comment fais tu pour intégrer en colonne B, le champ "Prix unitaire" ?

Re,

J'ai bien écrit que l'avais remplace "Prix" par "Prix unitaire".

Cdlt.

9forum-1.xlsx (49.73 Ko)

J'ai bien noté ce point là Jean-Eric.

Je me suis mal exprimé.

je n'arrive pas à intégrer le champ "Prix unitaire" en colonne B.

Celui ci s'incrémente en colonne A sous les clients

Merci

forum

C'est bon

J'ai solutionné mon soucis.

Merci pour ta précieuse collaboration

Rechercher des sujets similaires à "synthese donnee tableau"