Power Query query - calculer le taux de tva

dec2020

XLDnaute Nouveau
Bonjour

dans le fichier ci joint je voudrais, via power query (et pas en vba), faire en sorte qu'une colonne nouvelle soit créée dans laquelle le taux de tva sera calculé
pour information la colonne B indique si c'est du hors taxe ou de la tva (si ca commence par 7 c'est de du ht, si ça commence par 4 c'est de la tva)
le montant est quant à lui indiqué en colonne H
je veux que soit calculé le taux de tva pour chaque écriture (une écriture est un groupe de ligne qui à le même libellé en colonne E). la difficulté vient du fait qu'il peut y avoir deux lignes pour une écriture ou trois lignes

dans le fichier joint, l'onglet A représente les données brutes et l'onglet suivant représente le tableau tel que je voudrais qu'il soit au final

merci d'avance pour votre aide
 

Pièces jointes

  • juillet2024EXCELDONLOAD.xlsx
    60.7 KB · Affichages: 9

JFL_XLD

XLDnaute Junior
Bonjour à tous !

Une autre approche Power Query ?

Sur la base d'un tableau structuré en feuille "A" nommé tSource :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    Types = Table.TransformColumnTypes(Source,{{"date", type date}, {"Euro", type number}}),
    GroupBy = Table.Group(
        Types,
        {"nume"},
        {
            {"Détails", each _, type table [jour=text, comp=text, comp1=any, date=nullable date, libe=text, nume=nullable text, Sens=text, Euro=nullable number, anal=nullable text, lett=text]},
            {"Taux", each  let tTva= List.Sum(Table.SelectRows(_, each Text.StartsWith([comp],"4"))[Euro]) in tTva/(List.Sum([Euro])-tTva)}
        }),
    Expand = Table.ExpandTableColumn(GroupBy, "Détails", List.Difference(Table.ColumnNames(Source),{"nume"})),
    ValRempl = Table.ReplaceValue(Expand,each [Taux],each if Text.StartsWith([comp],"4") then [Taux] else null,Replacer.ReplaceValue,{"Taux"}),
    RéorgCol = Table.ReorderColumns(ValRempl,Table.ColumnNames(Source)&{"Taux"})
in
    RéorgCol
 

JFL_XLD

XLDnaute Junior
Bonsoir à tous !

Pour le "fun", une version 2 optimisée :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="tSource"]}[Content],
    Types = Table.TransformColumnTypes(Source,{{"date", type date}, {"Euro", type number}}),
    GroupBy = Table.Group(
        Types,
        {"nume"},
        {
            {"Détails", (x)=> let tmt=List.Sum(x[Euro]), tbl=Table.AddColumn(x,"Taux", each if Text.StartsWith([comp],"4") then  [Euro]/(tmt-[Euro]) else null, Number.Type) in tbl, type table [jour=text, comp=text, comp1=any, date=nullable date, libe=text, nume=nullable text, Sens=text, Euro=nullable number, anal=nullable text, lett=text, Taux=number]}
        })[[Détails]],
    Expand = Table.ExpandTableColumn(GroupBy, "Détails", Table.ColumnNames(GroupBy[Détails]{0}))
in
    Expand
 

Discussions similaires

Réponses
8
Affichages
358

Statistiques des forums

Discussions
315 089
Messages
2 116 098
Membres
112 661
dernier inscrit
ceucri