Power Pivot / Dax : Somme cumulative comparée A-1

Bonjour à toutes et tous,

Je calcule dans Power Pivot un volume YTD avec la formule suivante :

Volume YTD = calculate(sum([Qte Stock]);filter(ALLSELECTED('Calendar'[Date]);'Calendar'[Date]<=max('Calendar'[Date])))

Je souhaite calculer ce même volume YTD pour la période A-1. La date de début est la 1ère date de la chronologie de ma table de date - 1 an, et la date de fin et la dernière date de facture (issue d'une autre table) - 1 an.

Je ne rencontre pas de problème avec la date de début :

First = dateadd(firstdate('Calendar'[Date]);-1;YEAR)

Par contre je ne peux pas faire la même chose avec la date de fin, et j'en conclus que c'est parce qu'elle n'est pas issue d'une table de date :

Last = dateadd(Lastdate('Tab_FAC_VEN'[Date Pièce]);-1;YEAR) = ne donne pas de résultat.

J'ai tenté de contourner avec la formule ci dessous mais qui n'est pas propre, même si elle me donne la date souhaitée.

Last = LASTDATE(Tab_FAC_VEN[Date Pièce])-365

Et lorsque que je fais mon calcul Volume YTD A-1 j'ai un message d'erreur de "représentation numérique non valide pour une valeur de date"

Volume YTD A-1 =CALCULATE([Volume YTD];DATESBETWEEN('Calendar'[Date];[first];[last]))

Quelqu'un pourrait-il m'aiguiller ?

Par avance merci

Antoine

Bonjour Toine40,

Je pense que votre problème pourrait venir de plusieurs sources :

  1. Vous utilisez lastdate sur la colonne 'Tab_FAC_VEN'[Date Pièce]. Il serait préférable d'utiliser max car lastdate est plus utilisé avec les colonnes de date dans un contexte de filtre, tandis que max donne simplement la valeur la plus grande, peu importe le contexte de filtre.
  2. Assurez-vous que vos tables 'Calendar'[Date] et 'Tab_FAC_VEN'[Date Pièce] sont toutes deux de type date. Parfois, les colonnes peuvent sembler être de type date, mais en réalité, elles sont de type texte ou numérique, ce qui peut causer des problèmes avec les fonctions de date.
  3. Finalement, la fonction DATESBETWEEN pourrait être le problème. Cette fonction s'attend à ce que les deux dates soient des dates uniques, mais il semble que [first] et [last] soient des colonnes entières plutôt que des dates uniques.

Une formule qui pourrait vous aider :

First = DATEADD(FIRSTDATE('Calendar'[Date]), -1, YEAR)
Last = DATEADD(MAX('Tab_FAC_VEN'[Date Pièce]), -1, YEAR)

Volume YTD A-1 = 
CALCULATE(
  [Volume YTD], 
  FILTER(
    ALL('Calendar'[Date]),
    'Calendar'[Date] >= MIN([First]) && 'Calendar'[Date] <= MAX([Last])
  )
)

J'espère que cela vous aidera !

Bonjour Abderrahmane,
Et merci pour ton aide. Malheureusement ça ne fonctionne pas.
1. Quand je remplace Lastdate par Max j'obtiens bien ma date maxi de facturation, mais dès que j'intègre le DATEADD dans la formule j'ai un message d'erreur : Une fonction « MAX » a été utilisée dans une expression True/False utilisée en tant qu'expression de filtre de table. Cela n'est pas autorisé. ».

2. 'Calendar'[Date] et 'Tab_FAC_VEN'[Date Pièce] sont bien au format de date, aussi bien dans Power query que dans Power Pivot

3. Si j'affiche First et Last dans un TCD, j'obtiens bien mes dates 01/01/2022 et 26/06/2022 en l'occurrence

Du coup lorsque j'essaye ta formule il n'accepte pas les fonctions MIN et MAX ; lorsque je les retire je n'ai plus d'erreur dans la formule, mais pas de résultat.

Bonjour à tous,
J'ai finalement résolu mon problème, avec une formule propre et qui ne pose plus de problème de restitution de date. La voici au cas où ça pourrait aider quelqu'un :

= calculate(sum([Qte Stock]);
dateadd(filter(allselected('Calendar'[Date]);'Calendar'[Date]<=MAX(Tab_FAC_VEN[Date Pièce]));-1;YEAR)))

Bonne journée,

Rechercher des sujets similaires à "power pivot dax somme cumulative comparee"