Calculer l’écart entre 2 valeur quand les dates ne se suivent pas

  • Calculer l’écart entre 2 valeur quand les dates ne se suivent pas

    Posté par Jean-Philippe sur 10 avril 2024 à 8h17

    Je souhaite trouver une mesure qui me permette de calculer l’évolution d’une valeur d’une enquête sur l’autre.
    La difficulté sur laquelle je bloque, c’est que les dates des enquêtes ne se suivent pas de manière régulière.
    Dans l’exemple en pièce jointe (j’ai isolé une seule question sur les 7 de l’enquête), vous pouvez constater que sur 1 an (de mars 23 à mars 24),
    l’intervalle entre les enquêtes évolue entre 1, 2 et 3 mois.
    Merci de votre aide

    Jean-Philippe a répondu Il y a 6 mois, 3 semaines 2 Membres · 14 Réponses
  • 14 Réponses
  • David

    Membre
    10 avril 2024 à 11h39

    Bonjour Jean-Philippe,

    Aurais-tu la possibilité de mettre à disposition un fichier avec ces mêmes données en exemple ?

  • Jean-Philippe

    Membre
    10 avril 2024 à 14h43

    Bonjour David,

    Merci de ton aide.

    J’ai mis le fichier Test ecart.xlsx dans l’onglet document.

    • Cette réponse a été modifiée Il y a 7 mois, 2 semaines par  Jean-Philippe.
  • David

    Membre
    12 avril 2024 à 17h24

    Bonjour Jean-Philippe,

    Voici une approche avec Power Query en créant une nouvelle colonne avec la formule suivante :

    <pre class=”language-markup”>= Table.AddColumn(#"Type modifié", "Ecart avec précédent",
    each
    let
    q = [Question],
    d = [Posée le],
    t = Table.SelectRows(#"Type modifié", each ([Question] = q) and ([Posée le] < d)),
    dp = List.Max(t[Posée le])
    in
    try [Valeur] - Table.SelectRows(t, each ([Posée le] = dp)){0}[Valeur] otherwise null,
    Int64.Type
    )

  • David

    Membre
    12 avril 2024 à 17h57

    Une alternative en DAX serait la formule suivante. Mais ça ne fonctionne que si une seule valeur est sélectionnée pour [Posée le] et [Question]

    Si plusieurs valeurs peuvent être sélectionnées il faudrait améliorer la formule

    <pre class=”language-markup”>Ecart avec précédent (DAX) =
    VAR __date =
    SELECTEDVALUE ( Tableau1[Posée le] )
    VAR __question =
    SELECTEDVALUE ( Tableau1[Question] )
    VAR __questionsPrecedente =
    CALCULATETABLE (
    Tableau1,
    Tableau1[Question] = __question,
    Tableau1[Posée le] < __date
    )
    VAR __datePrecedente =
    MAXX ( __questionsPrecedente, [Posée le] )
    VAR __resultatPrecedent =
    CALCULATE (
    SUM ( Tableau1[Valeur] ),
    Tableau1[Posée le] = __datePrecedente,
    Tableau1[Question] = __question
    )
    VAR __result =
    IF (
    __resultatPrecedent = 0,
    BLANK (),
    SUM ( Tableau1[Valeur] )
    - CALCULATE (
    SUM ( Tableau1[Valeur] ),
    Tableau1[Posée le] = __datePrecedente,
    Tableau1[Question] = __question
    )
    )
    RETURN
    __result

  • Jean-Philippe

    Membre
    15 avril 2024 à 9h22

    Bonjour David,

    Encore merci pour ton aide.

    J’ai été pas mal pris ces derniers jours, je ne m’attèle seulement aux modicifactions.

    J’ai bien ajouté la colonne dans Power Query avec la formule que tu m’as indiqué mais je n’obtiens pas de résultat chiffré mais “table”…

    J’ai du faire une mauvaise manip ?

  • David

    Membre
    15 avril 2024 à 9h25

    Bonjour Jean-Philippe,

    Pourrais-tu me montrer la formule qui s’affiche dans la barre de formule ?

  • Jean-Philippe

    Membre
    15 avril 2024 à 10h13

    la voilà :

    = Table.AddColumn(#”Type modifié”, “Ecart”, each Table.AddColumn(#”Type modifié”, “Ecart avec précédent”,
    each
    let
    q = [Question],
    d = [Posée le],
    t = Table.SelectRows(#”Type modifié”, each ([Question] = q) and ([Posée le] < d)),
    dp = List.Max(t[Posée le])
    in
    try [Valeur] – Table.SelectRows(t, each ([Posée le] = dp)){0}[Valeur] otherwise null,
    Int64.Type
    ))

  • Jean-Philippe

    Membre
    30 avril 2024 à 8h56

    Bonjour david,

    j’espère que tout va bien.

    Tu as pu trouver une explication stp ?

  • David

    Membre
    30 avril 2024 à 9h57

    Bonjour Jean-Philippe,

    Désolé de ne pas avoir répondu plus tôt, j’ai été assez occupé et je n’avais pas fait attention à tes réponses.

    Dans la barre de formule de Power Query remplace ta formule par la formule suivante

    <pre class=”language-markup”>= Table.AddColumn(#”Type modifié”, "Ecart avec précédent",
    each
    let
    q = [Question],
    d = [Posée le],
    t = Table.SelectRows(#"Type modifié", each ([Question] = q) and ([Posée le] < d)),
    dp = List.Max(t[Posée le])
    in
    try [Valeur] - Table.SelectRows(t, each ([Posée le] = dp)){0}[Valeur] otherwise null,
    Int64.Type
    )

  • Jean-Philippe

    Membre
    30 avril 2024 à 11h37

    Pas de souci, c’est déjà très gentil de m’accorder du temps.

    Je teste et je te tiens au courant. Merci

  • Jean-Philippe

    Membre
    30 avril 2024 à 15h39

    David,

    Il m’indique ça…

  • Jean-Philippe

    Membre
    30 avril 2024 à 15h42

    David,

    Il m’indique ça…

    et je ne peux pas valider la formule.

    J’ai modifié les guillements qui me semblaient différents des formules précédentes et le résultats est le même = Une colonne avec table dedans.

  • David

    Membre
    30 avril 2024 à 16h08

    Ah mais je constate que tu n’es pas au bon endroit. Tu essayes d’insérer ta formule dans la boite de dialogue d’insertion d’une colonne personnalisée. Tu n’es pas dans la barre de formule d’éditeur

    Et ici #”Type modifié” correspond au nom de l’étape précédente. Tu dois l’adapter en conséquence

  • Jean-Philippe

    Membre
    30 avril 2024 à 16h31

    Super merci !

Connectez-vous pour répondre.