Club Power BI

Please login or click SIGN UP FOR FREE to create your PowerBIUG account to join this user group.
 View Only
  • 1.  Power query custom colonne avec calcul un peu compliqué (je pense !)

    Posted Feb 10, 2023 05:44 AM

    Bonjour à vous,

    Je souhaite ajouter une colonne personnalisé dans Power Query (Excel ou PBI) pour calculer le cumul des 3 derniers mois d'une série, face à Mars on calcule donc la somme de Janvier à Mars, face à Avril on calcule donc la somme des mois de Février à Avril .....

    Les mois sont classés par ordre calendaire, facile dans excel mais je me casse la tête pour trouver l'équivalent dans Power Query en y ajoutant une colonne.....

    Voici la table sous Excel, avec les 12 mois, et le résultat attendu:

    Je souhaite dans la colonne ajoutée, voir en face de Mars le montant 374 446 et en face d'Avril, le montant 391 678 etc etc

    Bon je bloque pour l'écrire sous Power query .........

    Pouvez-vous m'aider ?

    Un grand merci d'avance

    Sylvie



    ------------------------------
    Sylvie LAURENT
    VP sales
    ------------------------------


  • 2.  RE: Power query custom colonne avec calcul un peu compliqué (je pense !)

    Posted Feb 10, 2023 04:33 PM

    Bonsoir Sylvie,

    Dans powerquery, tu as un puissant outil.
    Dans l'onglet "Ajouter colonne", (avec le choix : A partir de toutes ou a partir de la sélection)
    dans le cas qui te concerne, tu sélectionnes les colonnes "mois"" et "CA" , tu sélectionnes ajouter une colonne à partir de la sélection
    Dans l'interface, tu renommes directement la colonne comme tu le souhaites.
    Ensuite tu rentres les valeurs telles que tu les souhaites, peut être qu'il faudra en remplir plusieurs.
    Powerquery va trouver, si c'est faisable pour lui, la formule que tu cherches et te créer l'étape qui plus est.

    Dis moi si ça fonctionne. J'essayerai de t'aider mais je ne suis pas un pro du langage M 



    ------------------------------
    ludovic ROBIN
    ------------------------------



  • 3.  RE: Power query custom colonne avec calcul un peu compliqué (je pense !)

    Posted Feb 16, 2023 05:00 AM

    Bonjour Ludovic,

    En premier lieu, merci pour ton aide et la réponse à ma question .....

    Bon .... je connais très bien cette fonction .. je n'y avais même pas pensé !!!

    Malheuresement... elle ne donne pas le bon résultat, l'IA ne comprends pas (avec les 2 colonnes séléctionnés ou une seule ....) et écrit des if avec le nom du mois .... dy type each if [Mois] = "Mars" then

    Donc retour au point de départ .. Grrrrrrrr, mais bon réflexe.

    Je suis sure que c'est finalement simple, mais je ne trouve pas encore ...

    Help si vous avez d'autres idées ?

    Merci Ludovic et toutes les suggestions sont les bienvenues



    ------------------------------
    Sylvie LAURENT
    VP sales
    ------------------------------



  • 4.  RE: Power query custom colonne avec calcul un peu compliqué (je pense !)

    Bronze Contributor
    Posted Feb 17, 2023 08:35 AM
    Edited by S LORIN Feb 17, 2023 08:43 AM

    Bonjour

    Voici une possibilité de code M pour récupérer le CA glissant sur les 3 lignes précédentes

    Tableau1 = votre tableau avec une colonne Mois et une colonne CA

    le principe est d'ajouter un index,

    d'indiquer la première ligne à prendre en compte  0, 0, 0, 1, 2, 3... (0 = la première ligne)

    et la hauteur 1, 2, 3, 3, 3, 3...

    et de faire la somme de la colonne [CA] à partir de la ligne définie et de la hauteur avec List.Sum ( List.Range...

    let
        Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
        Index = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),
        Index_départ = Table.AddColumn(Index, "Départ", each if [Index] > 3 then [Index]-3 else 0),
        Hauteur = Table.AddColumn(Index_départ, "Hauteur", each if [Index] < 3 then [Index] else 3),
        CA_glissant = Table.AddColumn(Hauteur, "CA Glissant", each List.Sum(List.Range(Source[CA],[Départ],[Hauteur])))
    in
        CA_glissant

    Si votre table est volumineuse, vous pouvez ajouter un List.Buffer pour mettre en mémoire la colonne [CA] : List.Buffer(Source[CA])

    Par exemple avec les deux colonnes intermédiaires en moins

    let
        Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
        Index = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),
        Buffer = List.Buffer(Source[CA]),
        CA_glissant = Table.AddColumn(Index, "CA Glissant", each
            List.Sum(
                List.Range(
                    Buffer,
                    List.Max({0,[Index]-3}),
                    List.Min({[Index],3})
                )
            )
        )
    in
        CA_glissant



    ------------------------------
    S LORIN
    ------------------------------