Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
kevinchevrier
Partner - Creator III
Partner - Creator III

Générer les jours fériés français automatiquement

Bonjour,

Vous serez probablement confronté un jour au calcul d'un intervalle en jours ouvrés entre 2 dates.

Pour cela, il faudra utiliser la fonction NetWorkDays.


Exemple :

=NetWorkDays('10/07/2017','17/07/2017') ==> renvoie 6.


Cela ne vous convient pas car il y a le 14 juillet qui est férié. Ainsi dans le 3ème paramètre il faudra spécifier les jours fériés.


Si vous souhaitez avoir le moins de manipulation possible par la suite, l'idéal est donc de calculer les jours fériés automatiquement et les stocker dans une variable.

De manière à avoir ceci :

=NetWorkDays('10/07/2017','17/07/2017',$(listeFeries)) ==> renvoie 5

Pour calculer la variable listeFeries, voici le script à utiliser (vDateMin et vDateMax peuvent être adaptées) :

LET vDateMin = Year(AddYears(today(),-2));

LET vDateMax = Year(today());

// Jours fériés fixes

Let Annee='';

Let An='';                

Let Travail='';                

Let ArmisticeMai='';                

Let National='';              

Let Assomption='';           

Let Toussaint='';             

Let ArmisticeNovembre='';

Let Noel='';

For Annee = vDateMin TO vDateMax

  An=An & ',' & chr(39) & makedate($(Annee), 1, 1) & chr(39);                  // Jour de l'an

  Travail=Travail & ',' & chr(39) & makedate($(Annee), 5, 1) & chr(39);                  // Fete du travail 1er Mai

  ArmisticeMai=ArmisticeMai & ',' & chr(39) & makedate($(Annee), 5, 😎 & chr(39);                  // Armistice 1945 8 Mai

  National=National & ',' & chr(39) & makedate($(Annee), 7, 14) & chr(39);                // Fete National 14 Juillet

  Assomption=Assomption & ',' & chr(39) & makedate($(Annee), 8, 15) & chr(39);                // Assomption 15 Aout

  Toussaint=Toussaint & ',' & chr(39) & makedate($(Annee), 11, 1) & chr(39);                // Toussaint 1er Novembre

  ArmisticeNovembre=ArmisticeNovembre & ',' & chr(39) & makedate($(Annee), 11, 11) & chr(39);                // Armistice 1918 11 Novembre

  Noel=Noel & ',' & chr(39) & makedate($(Annee), 12, 25) & chr(39);                // Noel

Next

// Jours fériés variables

Let DatePaques='';                           

Let PaquesLundi='';  

Let Ascension='';  

Let Pentecote=''; 

Let PentecoteLundi='';

For Annee = vDateMin to vDateMax

DatePaques =DatePaques & ','&  chr(39) & Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6) & chr(39);            // Dimanche de Paques

PaquesLundi =PaquesLundi & ','&  chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+1,'DD/MM/YYYY')) & chr(39); // Lundi de Paques

Ascension =Ascension & ','&  chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+39,'DD/MM/YYYY')) & chr(39);    // Jeudi de l'Ascension

Pentecote =Pentecote & ','&  chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+49,'DD/MM/YYYY')) & chr(39);    // Dimanche de Pentecote

PentecoteLundi =PentecoteLundi & ','&  chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+50,'DD/MM/YYYY')) & chr(39);   // Lundi de Pentecote

Next

// Tous les jours fériés dans une seule variable

Let listeFeries = mid(An & Travail & ArmisticeMai & National & Assomption & Toussaint & ArmisticeNovembre & Noel & DatePaques & PaquesLundi & Ascension & Pentecote & PentecoteLundi, 2);

// Remise à zéro des variables utilisées

Let Annee = '';

Let An='';                

Let Travail='';                

Let ArmisticeMai='';                

Let National='';              

Let Assomption='';           

Let Toussaint='';             

Let ArmisticeNovembre='';

Let Noel='';

Let DatePaques='';                           

Let PaquesLundi='';  

Let Ascension='';  

Let Pentecote=''; 

Let PentecoteLundi='';

Kevin

0 Replies