Cas pratique Power Query

Bonjour,

Je met en PJ mon fichier test pour plus de simplicté on me demande de faire un suivi sur un tableau un peu particulier.

J'ai un tableau avec des montants pour chaque frs qui sont réajustés au fil des ans et des fois non
Je souhaiterais supprimer pour chaque client le 1er montant le plus ancien réajustés et l'indiqué dans une colonne montant initial

Dans mon exemple c'est plus explicite par contre je n'ai aucune idée comment faire et par ou commencer

Merci d'avance pour votre aide

10test.xlsx (18.66 Ko)

Bonjour,

Un exemple

let
    Source = Excel.CurrentWorkbook(){[Name="BASE"]}[Content],
    Calcul = Table.AddColumn(Source, "Montant Initial", each [SOLDE DEPOT] - Replacer.ReplaceValue(List.Sum(List.RemoveLastN(List.Skip(Record.ToList(_),4))),null,0), type number)
in
    Calcul

Bon dimanche

Re-,

A noter que dans la dernière étape la fonction "Replace..." peut être remplacée comme ceci :

Calcul = Table.AddColumn(Source, "Montant Initial", each [SOLDE DEPOT] -(List.Sum(List.RemoveLastN(List.Skip(Record.ToList(_),4)))??0), type number)

Mais pas sûr que 2016 accepte cette syntaxe...

Bonjour à tous !

Une approche (différente à la marge ) :

let
    Source = Excel.CurrentWorkbook(){[Name="BASE"]}[Content],
    SelCol = List.Select(Table.ColumnNames(Source), each Text.StartsWith(_,"Réaj") ),
    Traitt = Table.AddColumn(Source, "MONTANT INITIAL", each [SOLDE DEPOT]-Replacer.ReplaceValue(List.Sum(Record.FieldValues(Record.SelectFields(_,SelCol))),null,0)),
    ColReo = Table.SelectColumns(Traitt,List.InsertRange(Table.ColumnNames(Source),4,{"MONTANT INITIAL"}))
in
    ColReo

Bonjour,

Merci mais je pense que j'ai mis était faux
Je remet l'exemple cette fois-ci bon
Ce que je veux c'est que les montants pour chaque ligne client (les plus ancien) disapraisent et ce place dans la colonne MONTANT INITIAL
Le solde lui ne change pas il fait bien la somme des montants (Montant initaile + tous les réajustements)

16test.xlsx (31.71 Ko)

Re-,

ainsi ?

let
    Source = Excel.CurrentWorkbook(){[Name="BASE"]}[Content],
    ListCols = List.Select(Table.ColumnNames(Source), each Text.StartsWith(_,"Réaj") ),
    Prem = Table.AddColumn(Source, "Montant Initial", each List.First(List.RemoveNulls(Record.ToList(Record.SelectFields(_,ListCols)))))
in
    Prem

Bonjour,

Cela fonctionne par contre j'ai toujours les montants dans les réajustements

Ceux qui sont dans MONTANT INITIAL grâce à ta formule doivent être éffacés des réajustements les plus anciens pour chaque client

Une idée comment on pourrait faire ?

Cordialement,

Bonjour à tous de nouveau !

Une approche liée à cette précision :

let
    Source = Excel.CurrentWorkbook(){[Name="BASE"]}[Content],
    SelCol = List.Select(Table.ColumnNames(Source), each Text.StartsWith(_,"Réaj") ),
    Traitt = Table.AddColumn(Source, "MT", each let 
                reaj= Record.SelectFields(_,SelCol),
                pr=List.RemoveNulls(Record.FieldValues(reaj)){0},
                nre= Record.FieldNames (reaj){List.PositionOf(Record.FieldValues(reaj),pr)}
                in Record.TransformFields(_,{nre,each null})&[MONTANT INITIAL=pr]),
    Réorg = Table.ReorderColumns (Table.FromRecords(Traitt[MT]),List.InsertRange(Table.ColumnNames(Source),4,{"MONTANT INITIAL"}))
in
    Réorg

Bonjour Merci à vous deux,

Merci encore JFL cela fonctionne parfaitement bien
J'ai pas tout compris mais cela fonctionne à merveille

Cordialement,

Bonsoir à tous !

Bien...

Je vous remercie de ce retour.

Rechercher des sujets similaires à "cas pratique power query"