Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Cirdecp007
Creator
Creator

Remplacer année dans sélection de dates

Bonjour,

Je souhaiterai remplacer l'année dans une sélection de date.

Je filtre sur Date en sélectionnant X dates de 2023 et je voudrais appliquer un filtre forcé dans une formule avec Date=Replace(Date,'2023',2022') pour avoir les mêmes dates de l'année précédente.

Par quoi faut-il remplacer Date dans la fonction Replace() pour avoir la liste des dates de la sélection active ?

Si ce n'est pas possible, avez-vous une meilleure idée ?

Je vous remercie par avance de votre aide.

1 Solution

Accepted Solutions
brunobertels
Master
Master

Bonjour 

 

OK je vois il te faut donc dans ton set analysis une liste de date du type 

sum({<Datefield= {'05/01/2022,15/01/2022,01/02/2022,'}> } Sales) 

Dont ces dates correspondraient à la sélection des dates 05/01/2023, 15/01/2023 et 01/02/2023 

 

Pour ce faire tu peux passer par : 

sum({<Datefield= {$(=replace(concat( distinct chr(39)& Datefield&chr(39),','),'2023','2022'))}> } Sales)

 

Et çà devrait marcher ... 

A noter le changement d'année n'est pas dynamique donc la comparaison ne se fera que  sur 2022 sur des dates sélectionnées en 2023. 

 

Si tu peux passer par le script alors regarde de ce coté pour une solution plus simple : 

https://www.qreatic.fr/dailyqlikchallenge/2021/6/04/69-same-day-previous-year-comparison-in-qlik-sen... 

Cela permet de comparer des Dates , plages de dates entre N  et  N-1 voire même de comparer des sélections à cheval sur 2 années par exemple 30/12/2023 et 28/12/2022 seront comparés à 30/12/2022 et 28/12/2021. 

 

Cdt 

 

View solution in original post

6 Replies
brunobertels
Master
Master

Bonjour 

 

Plutôt que la fonction replace () je te propose de regarder du coté de la fonction addyear() 

 

ainsi çà pourrait donner : 

21/08/2023 : 

Sum({<Date = {'$(=Today())'}>}Sales)

 

21/08/2022

Sum({<Date = {'$(=AddYears(Today(),-1))'}>}Sales)

 

tu peux remplacer today() par ton champ date

Cirdecp007
Creator
Creator
Author

Merci.

Mon problème n'est pas vraiment sur la fonction de date mais le fait qu'il y ait plusieurs dates à traiter dans le même filtre.

Je ne sais pas comment appliquer ce addyears() à chaque date en une fois et mon champ Date = '-' en cas de multi sélection :

J'ai réussi à faire ça mais malgré les bonnes dates affichées, cela me donne une mesure à 0€

Date = {"$(=Replace(chr(39) & concat(distinct date(Date, 'DD/MM/YYYY'), chr(39) & ',' & chr(39)) & chr(39), '2023' , '2022'))"}

brunobertels
Master
Master

Re, 

OK si je comprends bien ton utilisateur sélectionne des dates une min et une max,  dans ce cas ce type  de formule devrait t'aider :

 

on va chercher les dates entre  >= min(Datefield) et <= Max(Datefield) et pour chaque on va enlever 12 mois addmonth(Datefield,-12) : 

 

=sum({<Datefield= {">=$(=Addmonths(min(Datefield),-12))<=$(=Addmonths(max(Datefield),-12))"}> } Sales)

Cirdecp007
Creator
Creator
Author

C'est effectivement une solution possible mais le problème, même si ce n'est pas forcément logique, c'est le cas de figure ou 3 dates seraient sélectionnées type 05/01/2022 + 15/01/2022 + 01/02/2022. J'aurais donc une période du 05/01/2022 au 01/02/2022 au lieu de 3 jours. C'est pour ça que j'étais parti dans des modifs d'années en masse même si la probabilité que cela arrive est mince

brunobertels
Master
Master

Bonjour 

 

OK je vois il te faut donc dans ton set analysis une liste de date du type 

sum({<Datefield= {'05/01/2022,15/01/2022,01/02/2022,'}> } Sales) 

Dont ces dates correspondraient à la sélection des dates 05/01/2023, 15/01/2023 et 01/02/2023 

 

Pour ce faire tu peux passer par : 

sum({<Datefield= {$(=replace(concat( distinct chr(39)& Datefield&chr(39),','),'2023','2022'))}> } Sales)

 

Et çà devrait marcher ... 

A noter le changement d'année n'est pas dynamique donc la comparaison ne se fera que  sur 2022 sur des dates sélectionnées en 2023. 

 

Si tu peux passer par le script alors regarde de ce coté pour une solution plus simple : 

https://www.qreatic.fr/dailyqlikchallenge/2021/6/04/69-same-day-previous-year-comparison-in-qlik-sen... 

Cela permet de comparer des Dates , plages de dates entre N  et  N-1 voire même de comparer des sélections à cheval sur 2 années par exemple 30/12/2023 et 28/12/2022 seront comparés à 30/12/2022 et 28/12/2021. 

 

Cdt 

 

Cirdecp007
Creator
Creator
Author

J'ai utilisé ta formule et elle marche très bien. Merci.

J'ai juste remplacé les années 2023 et 2022 par des variables Année et Année de comparaison et c'est top.