Power Query Décomposition des ventes par mois

Bonjour à tous,

Je coince sur le fichier joint, je ne sais pas trop comment m'y prendre pour obtenir le résultat présenté sur le fichier.

J'ai besoin de décomposer les ventes par produits, par mois avec déduction des remises et rabais appliquées au premier jour de la vente,

Merci d'avance pour votre aide,

Cordialement,

4test.xlsx (16.97 Ko)

Bonjour à tous !

Une piste ?

let
    Source = Excel.CurrentWorkbook(){[Name="T_ORIGINE"]}[Content],
    TypeDate = Table.TransformColumnTypes(Source,{{"DATE DE FIN", type date}}),
    VersBas = Table.FillDown(TypeDate,{"IDENTITE PDT"}),
    GroupBy = Table.Group(VersBas, {"IDENTITE PDT"}, {{"Ventes", each Number.Round(List.Sum([MONTANT]),2), type number}, {"Date début", each List.Min([DATE DE FIN]), type datetime}, {"Date fin", each List.Max([DATE DE FIN]), type datetime}}),
    Filtre = Table.SelectRows(GroupBy, each ([Ventes] <> 0)),
    ListeDates = Table.AddColumn(Filtre, "LD", each List.Dates([Date début], Duration.Days([Date fin]-[Date début])+1, Duration.From(1))),
    VteJour = Table.AddColumn(ListeDates, "Personnalisé", each [Ventes]/List.Count([LD])),
    ExpandLD = Table.ExpandListColumn(VteJour, "LD"),
    Libellé = Table.AddColumn(ExpandLD, "Libellé", each [IDENTITE PDT] & " " & Date.ToText( if Date.Month([LD])=Date.Month([Date début]) then [Date début] else Date.StartOfMonth([LD])) & " au " & Date.ToText( if Date.EndOfMonth([LD])<[Date fin] then Date.EndOfMonth([LD]) else [Date fin])),
    Final = Table.Group(Libellé, {"Libellé"}, {{"Montant", each Number.Round(List.Sum([Personnalisé]),2), type number}})
in
    Final

Bonjour JFL,

Merci beaucoup pour votre retour, très constructif !

C'est presque cela, à la différence prés que le rabais et la remise s'applique intégralement sur le 1er jour de la vente, et non par répartition du nombre de jours concernés par mois,

Je rejoins le fichier test pour que vous compreniez ce que je veux dire,

Merci d'avance pour votre aide,

Cordialement,

2test.xlsx (19.50 Ko)

Bonjour à tous de nouveau !

Version amendée :

let
    Source = Excel.CurrentWorkbook(){[Name="T_ORIGINE"]}[Content],
    TypeDate = Table.TransformColumnTypes(Source,{{"DATE DE FIN", type date}}),
    VersBas = Table.FillDown(TypeDate,{"IDENTITE PDT"}),
    GroupBy = Table.Group(VersBas, {"IDENTITE PDT"}, {{"Ventes", each List.Sum(List.Select([MONTANT], each _>0)) ,type number},{"RR", each List.Sum(List.Select([MONTANT], each _<0)), type number}, {"Date début", each List.Min([DATE DE FIN]), type datetime}, {"Date fin", each List.Max([DATE DE FIN]), type datetime}}),
    Filtre = Table.SelectRows(GroupBy, each ([Ventes]+[RR] <> 0)),
    ListeDates = Table.AddColumn(Filtre, "LD", each List.Dates([Date début], Duration.Days([Date fin]-[Date début])+1, Duration.From(1))),
    VteJour = Table.AddColumn(ListeDates, "Personnalisé", each [Ventes]/List.Count([LD])),
    ExpandLD = Table.ExpandListColumn(VteJour, "LD"),
    Imput_RR = Table.ReplaceValue(ExpandLD,each [Personnalisé],each if [LD]=[Date début] then [Personnalisé]+[RR] else [Personnalisé],Replacer.ReplaceValue,{"Personnalisé"}),
    Libellé = Table.AddColumn(Imput_RR, "Libellé", each [IDENTITE PDT] & " " & Date.ToText( if Date.Month([LD])=Date.Month([Date début]) then [Date début] else Date.StartOfMonth([LD])) & " au " & Date.ToText( if Date.EndOfMonth([LD])<[Date fin] then Date.EndOfMonth([LD]) else [Date fin])),
    Final = Table.Group(Libellé, {"Libellé"}, {{"Montant", each Number.Round(List.Sum([Personnalisé]),2), type number}})
in
    Final

Bonjour JFL,

Merci pour ton aide, c'est parfait !!!!

Je vais me pencher sur chaque étape pour bien comprendre, une nouvelle fois c'est top !

Merci beaucoup et bon dimanche à vous,

Cordialement,

Bonjour à tous de nouveau !

Bien...

Je vous remercie de ce retour.

Rechercher des sujets similaires à "power query decomposition ventes mois"