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 at 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 12 months ago 2 Membres · 14 Réponses
  • 14 Réponses
  • David

    Member
    10 avril 2024 at 11h39

    Bonjour Jean-Philippe,

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

  • Jean-Philippe

    Member
    10 avril 2024 at 14h43

    Bonjour David,

    Merci de ton aide.

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

  • David

    Member
    12 avril 2024 at 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

    Member
    12 avril 2024 at 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

    Member
    15 avril 2024 at 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

    Member
    15 avril 2024 at 9h25

    Bonjour Jean-Philippe,

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

  • Jean-Philippe

    Member
    15 avril 2024 at 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

    Member
    30 avril 2024 at 8h56

    Bonjour david,

    j’espère que tout va bien.

    Tu as pu trouver une explication stp ?

  • David

    Member
    30 avril 2024 at 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

    Member
    30 avril 2024 at 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

    Member
    30 avril 2024 at 15h39

    David,

    Il m’indique ça…

  • Jean-Philippe

    Member
    30 avril 2024 at 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

    Member
    30 avril 2024 at 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

    Member
    30 avril 2024 at 16h31

    Super merci !

Connectez-vous pour répondre.