résultat d’aujourd’hui moins le résultat d’hier

Accueil – Le CFO masqué Forums Power Query résultat d’aujourd’hui moins le résultat d’hier

  • Ce sujet contient 5 réponses, 3 participants et a été mis à jour pour la dernière fois par Stéphane Lorin, le il y a 1 mois.
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Articles
  • #124358
    hboisteau
    Participant

    Bonjour a tous,

    je suis a la recherche d’une possible solution, a mon problème. Mais après quelques recherches sur le net je ne trouve pas vraiment d’approche correspondante a ma question.

    Voila je voudrais faire soustraction de deux valeurs (date d’aujourd’hui – date d’hier) en fonction de numéro distinct. le petit tableau ci-dessous remplaceras tout les mots.

    Date type valeur
    01/01/23 rouge 10
    01/01/23 vert 11
    02/01/23 rouge 15 le résultat rechercher est donc = 02/01/23 rouge 5 (ce résultat est toujours une progression, hormis si il y a un problème)
    02/01/23 vert 14 le résultat rechercher est donc = 02/01/23 vert 3 (ce résultat est toujours une progression, hormis si il y a un problème)

    Malheureusement je ne suis pas sur que cela puisse ce faire avec power query.

    Je suis preneur de toute idées, développement même avec power pivot (il faut bien apprendre)

    En vous souhaitant de fêtes de fin d’année et que 2023 soit remplie de santé, bonheur et succès

    HB

    #124359
    Daniel Blanc
    Participant

    Bonjour hboisteau,le Forum,
    Avec Power query, je ferais comme cela par rapport au jeu que tu as posté
    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Type modifié” = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
    #”Lignes groupées” = Table.Group(#”Type modifié”, {“type”}, {{“AllRows”, each _, type table [#”Date”=nullable date, #”type”=nullable text, valeur=nullable number]}}),
    #”Personnalisée ajoutée2″ = Table.AddColumn(#”Lignes groupées”, “MesDonnées”, each Table.Sort([AllRows],{“Date”, Order.Ascending})),
    #”Personnalisée ajoutée” = Table.AddColumn(#”Personnalisée ajoutée2″, “Valeurs”, each List.Last([MesDonnées][valeur])-List.First([MesDonnées][valeur])),
    #”Personnalisée ajoutée1″ = Table.AddColumn(#”Personnalisée ajoutée”, “Dates”, each List.Last([MesDonnées][Date])),
    #”Colonnes supprimées” = Table.RemoveColumns(#”Personnalisée ajoutée1″,{“AllRows”,”MesDonnées”}),
    #”Colonnes permutées” = Table.ReorderColumns(#”Colonnes supprimées”,{“Dates”, “type”, “Valeurs”})
    in
    #”Colonnes permutées”
    D’autres solutions sont certainement possibles.
    Bonne année
    Cordialement
    Daniel

    #124360
    hboisteau
    Participant

    Bonjour Daniel,

    merci beaucoup pour cette belle aide qui fonctionne a merveille, mais pourrais-je abuser encore un peu.

    est-ce possible de faire la meme chose avec plusieurs journée?
    02/01/23 MOINS 01/01/23 TYPE ROUGE
    03/01/23 MOINS 02/01/23 TYPE ROUGE
    04/01/23 MOINS 03/01/23 TYPE ROUGE

    Et ainsi de suite et pour les autres type aussi

    bonne année 2023 pleine de succès, bonheur et santé

    HB

    #124361
    Daniel Blanc
    Participant

    Bonjour hboisteau, le Forum,
    Et en essayant comme ceci, cela devrait te donner le résultat recherché ou tout au moins s’en approcher d’assez près.

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    ModificationTypeData = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
    TriDesLignes = Table.Sort(ModificationTypeData,{{“type”, Order.Ascending}, {“Date”, Order.Ascending}}),
    GroupSurType = Table.Group(TriDesLignes, {“type”}, {{“FullTable”, each _, type table [Date=nullable date, type=nullable text, valeur=nullable number]}}),
    IndexFullTable = Table.TransformColumns(GroupSurType,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
    AddColumnForPrevValue = Table.AddColumn(IndexFullTable, “CalculPrevValue”, each let
    AllDataTable = [FullTable],
    PrevRowValue = Table.AddColumn(
    AllDataTable,”PrevValue”,
    each try AllDataTable [valeur] {[Index]-1} otherwise null)
    in PrevRowValue),
    ListeofSingleTables = Table.Combine( AddColumnForPrevValue[CalculPrevValue],{“Date”,”type”,”valeur”,”PrevValue”}),
    CalculEcart = Table.AddColumn(ListeofSingleTables, “Ecart”, each [valeur]-[PrevValue]),
    SuppressionColonnes = Table.RemoveColumns(CalculEcart,{“PrevValue”})
    in
    SuppressionColonnes
    En espérant avoir pu t’aider ou te donner des pistes de réflexions
    Cordialement
    Daniel

    #124362
    hboisteau
    Participant

    Merci Daniel,

    c’est exactement cela , je vais maintenant essayer d’apprendre de cela et de mettre en application dans mon application

    HB

    #124388
    Stéphane Lorin
    Participant

    Bonjour

    Je vous ai proposé une autre possibilité sur un autre forum sans réponse de votre part. Inutile de poser votre question à plusieurs endroits si c’est pour ignorer leur réponse.

    Il me semble plus facile de mettre en œuvre une solution par fusion via une colonne personnalisée en ajoutant la date de la veille (et une colonne d’Index pour le tri)

    Voici le code

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    ModificationTypeData = Table.TransformColumnTypes(Source,{{“Date”, type date}, {“type”, type text}, {“valeur”, Int64.Type}}),
    #”Index ajouté” = Table.AddIndexColumn(ModificationTypeData, “Index”, 0, 1, Int64.Type),
    #”Personnalisée ajoutée” = Table.AddColumn(#”Index ajouté”, “Veille”, each Date.AddDays([Date],-1)),
    #”Requêtes fusionnées” = Table.NestedJoin(#”Personnalisée ajoutée”, {“Veille”, “type”}, #”Personnalisée ajoutée”, {“Date”, “type”}, “Personnalisée ajoutée”, JoinKind.LeftOuter),
    #”Personnalisée ajoutée développé” = Table.ExpandTableColumn(#”Requêtes fusionnées”, “Personnalisée ajoutée”, {“valeur”}, {“valeur veille”}),
    #”Soustraction insérée” = Table.AddColumn(#”Personnalisée ajoutée développé”, “Ecart”, each [valeur] – [valeur veille], Int64.Type),
    #”Lignes triées” = Table.Sort(#”Soustraction insérée”,{{“Index”, Order.Ascending}}),
    #”Autres colonnes supprimées” = Table.SelectColumns(#”Lignes triées”,{“Date”, “type”, “valeur”, “Ecart”})
    in
    #”Autres colonnes supprimées”

    Stéphane

6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.