Compter le nombre de jours ouvrés sur une période (PowerApps)
-
Compter le nombre de jours ouvrés sur une période (PowerApps)
Bonjour à tous
Récemment je me suis challengé tout seul à une “blague” d’un collègue proposant de compter le nombre de jours ouvrés sur une période.
Alors je vous propose simplement une formule prête à l’emploi pour obtenir le nombre de jours ouvrés.
Vous y trouverez également un calcul des jours fériés, ce qui peut bien évidemment être très utile.
Celle ci utilise en entrée 2 contrôles date picker pour charger des variables dateDebut et dateFin dans un with. Mais bien entendu vous pourrez indiquer les dates de votre choix. Attention à respecter l’antériorité des dates, celle de début étant la plus antérieure (min), et celle de fin la plus postérieure (max).
Pour vérifier mes calculs, je me suis servi d’un calendrier en ligne ( http://www.calendriergratuit.fr/calendrier-2023.htm sans lien car je ne suis absolument pas affilié à ce site…)
With(n {n dateMin:Min(dtpDebut.SelectedDate;dtpFin.SelectedDate);// la date la plus anciennen dateMax:Max(dtpDebut.SelectedDate;dtpFin.SelectedDate) // la date la plus récenten };n CountIf(n //Tous les jours de la période considéréen ForAll(n Sequence(n DateDiff( dateMin ; dateMax ; Days )+1;n 0;n 1n );n {jour:DateAdd(dateMin;Value;Days)}n );n //on y retire...n !Or(n //...les weekendsn Weekday(jour;StartOfWeek.Monday) >= 6;n //..et les jours fériésn jour in n //constitution de la totalité des congés sur les années couvertes par la périoden With(n {n outputTable: Ungroup( n ForAll(n Sequence( DateDiff(dateMin;DateAdd(dateMax;1;Days);Years)+1 ;Year(dateMin) ) As an;n With(n {n Paques:n 22+Mod((19*Mod(an.Value;19))+24;30)+Mod((Mod(an.Value;4)*2)+(Mod(an.Value;7)*4)+(Mod((19*Mod(an.Value;19))+24;30)*6)+5;7)-1+Date(an.Value;3;1)n };n Table(n {name:"Jour de l'an";date:Date(an.Value;1;1)};n //{name:"Pâques";date:Paques};n {name:"Lundi de Pâques";date:Paques+1};n {name:"Fête du travail";date:Date(an.Value;5;1)};n {name:"Victoire 1945";date:Date(an.Value;5;8)};n {name:"Ascension";date:Paques+39};n //{name:"Pentecôte";date:Paques+49};n {name:"Lundi de Pentecôte";date:Paques+49+1};n {name:"Fête Nationale";date:Date(an.Value;7;14)};n {name:"Assomption";date:Date(an.Value;8;15)};n {name:"Toussaint";date:Date(an.Value;11;1)};n {name:"Armistice 1918";date:Date(an.Value;11;11)};n {name:"Noël";date:Date(an.Value;12;25)}n )n )n );n "Value"n )/* Fusionne les tables en une unique sans suppression des doublons */n };n ShowColumns( //Affiche seulement les colonnes nécessairesn GroupBy(n outputTable;n "date";n "Grouped"//Le dernier paramètre peut avoir n'importe quel nom, celui de la table enfant avec les données groupéesn );n //les mêmes colonnes utilisées par le groupBy excepté celle de la table enfantn "date"n )n )n n )n ) & " jours ouvrés"n)n
PostID=V9o6ifeeaZrbsDP
Connectez-vous pour répondre.