Skip to main content

Francophones

Announcements
Welcome to Qlik Community! Check out our new navigation! FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
delphinewalter
Contributor III
Contributor III

Calcul N et N-1 avec sélection dynamique de la période

Bonjour, 

je sais que cette question a été abordée de nombreuses fois, j'ai lu beaucoup des posts sur le sujet (probablement pas tous), mais rien à faire, je n'y arrive pas et je ne comprends pas pourquoi.

J'ai créé à partir de ma table des ventes un MasterCalendar qui contient les champs suivants :

  • CalendarDate : la date complète
  • CalendarYear
  • CalendarMonth
  • CalendarDay
  • CalendarWeek
  • MonthYear au format MMM YYYY
  • WeekYear au format xx-YYYY
  • WeekDay résultat de cette même fonction

J'ai une liste de sélection avec mes années, une liste de sélection avec mes mois, et je voudrais pouvoir, en sélectionnant l'année et le mois, calculer : 

  • les ventes du mois M de l'année N
  • les ventes du mois M de l'année N-1

pour les ventes du mois M de l'année N, j'ai écrit comme formule : 

 

 

sum({$<CalendarYear={'$(=max(CalendarYear))'}>}V_CA_HT)

 

 

ça fonctionne.

pour les ventes du mois M de l'année N-1, j'ai fait plein de tests en fonction de ce que j'ai lu à droite à gauche mais qui ne fonctionnent pas :

 

 

sum({$<CalendarYear={'=$(=max(CalendarYear)-1)'}>}V_CA_HT)

sum({$<CalendarYear={'=$(=max(CalendarYear-1))'}>}V_CA_HT)

sum({$<CalendarYear={'=$(=max(CalendarYear)),$(=max(CalendarYear)-1)'}>}V_CA_HT)

sum({$<CalendarYear={'=$(=max(CalendarYear)),$(=max(CalendarYear-1))'}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear)-1)}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear-1))}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear)),$(=max(CalendarYear)-1)}>}V_CA_HT)

sum({$<CalendarYear={$(=max(CalendarYear)),$(=max(CalendarYear-1))}>}V_CA_HT)

la même chose sans le $ du début (sum({<CalendarYear...

Sum({$< MonthYear ={'=$(=vMonthYear)-365'}>} V_CA_HT) (avec vMonthYear=num(MonthYear))

 

 

qu'est-ce que je rate ? sachant que j'ai aussi fait le test en définissant une date de fin et une date de début, et là ça fonctionne : 

 

 

Sum({< CalendarDate = {'>=$(=Date(vStartDate-365))<=$(=Date(vEndDate-365))'} >} V_CA_HT)

 

 

 mais je trouve plus intuitif de sélectionner le mois et l'année, d'autant que j'ai beau mettre dans mon objet calendrier/curseur que la date min pour vEndDate est vStartDate, ça n'est pas pris en compte (=$(vStartDate) dans la case "valeur min") 

Merci pour votre aide !

Delphine

13 Replies
delphinewalter
Contributor III
Contributor III
Author

En même temps, maintenant mes cumuls YTD N et N-1 ne fonctionnent plus (ils étaient avec vStartDate et vEndDate) 😫

Seyko
Partner - Creator
Partner - Creator

Laisser l'expression sans expansion ($) c'est exactement la même chose que d'en définir une . En résumé que tu le gardes ou pas c'est pareil (voir lien).
Personnellement je suis plus à l'aise avec le (-1) hors du max. Mais le plus important c'est que ça fonctionne.

cordialement.

Excuse my english, i'm french!
lcloatre
Partner - Creator III
Partner - Creator III

Le $ ne change rien. Il dit juste que tu prends la sélection active et est sous-entendu lorsque tu ne le mets pas.

Lorsque tu ne souhaites pas prendre la sélection active, il faut mettre 1.

delphinewalter
Contributor III
Contributor III
Author

Bonjour, 

 

oui j'ai vu dans le lien (très utile, merci, je ne l'avais pas trouvé avant 🙂 ) envoyé par Seyko. J'avance du coup sur mes cumuls YTD et YTD N-1.

Merci encore.