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, 8) & 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