Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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