Bonjour,
Je recherche comment calculer le nombre de jours ouvrés entre 2 dates.
J'arrive à calculer le nombre de jours avec DateDifférence(), mais c'est tout.
Quelqu'un a-t-il un moyen?
Merci d'avance.
Bonjour,
Je recherche comment calculer le nombre de jours ouvrés entre 2 dates.
J'arrive à calculer le nombre de jours avec DateDifférence(), mais c'est tout.
Quelqu'un a-t-il un moyen?
Merci d'avance.
Malheureusement, je ne vois pas comment tu pourrais faire ça sans passer par une table qui te donne les jours ouvrés existants entre tes deux dates...
J'avais développé une appli il y a longtemps qui faisait ça pour de la GMAO. On avait une table qui contenait uniquement les jours non ouvrés (une date sous forme de clé par exemple) et je faisais un count sur cette table avec comme condition la date de début et la date de fin. le count te renvoie donc le nbre de jours non ouvrés. il ne te reste qu'à faire la différence avec ton datedifference pour avoir le nbre de jours ouvrés.
Si cela peut t'aider,
Cordialement.
DateVersJour() permet de savoir à quel jour de la semaine correspond une date. À partir de là, il n'y a plus que les jours fériers à gérer.
Il y a aussi des calculs de ce type dans les exemples :
- Exemple planning: création d'une table des jours fériés et exceptions.
- Exemple Congés Payés: calcul automatique des jours fériés.
Hello,
Puisque tu as le nmbre de jours entre les deux dates, tu divises le résultat par 7 et tu prends la partie entière du résultat. Tu aura donc le nombre de partie de 7 jours, si tu ne veux que les dimanches, tu retranches le nombre d'entier de semaine, si tu veux les samedis en plus, tu prends la partie entière et tu la multiplie par deux, etc....
Toutefois, tu n'auras pas les jours fériés qui doivent être inscrit dans une table (surtout si si c'est pas des samedi et dimande)
Je reconnais que je suis restrictif sur la réponse mais l'amorce est là
Amicalement
Bonjour à tous,
Déjà merci beaucoup pour vos réponses. Je ne sais pas encore vers quoi je vais m'orienter, DateversJour() me semble le plus simple, mais peut être que la solution d'une table avec les jours non ouvrés serait plus intéressante à long terme.
Merci encore.
A+
Il te faut les deux si tu veux inclure les jours fériés (ce qui semble indispensable pour toi)
- La fonction pour les jours de la semaine (tu ne peux pas stocker tous les jours de toutes les années et de toute façon c'est inutile)
- Une table pour les jours fériés
Bonjour,
Tout dépend de ce que l'on veut faire...
L'utilisation d'une table peut sembler étrange ou lourde, mais c'est (il me semble) la seule technique efficace pour de la GPAO ou de la GMAO.
C'est tellement pratique pour établir un planning prévisionnel, calculer une charge de travail, calculer intensivement des écarts de dates, etc.
_
Moi je crois que je ferais une simple boucle, avec un test pour chaque jour (fonction JourFérié()?)
à vérifier, parce que pas testé , et surtout pas propre du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 PRODECUDE nNbJoursFerie(dDateDebut, dDateFin) DateTest est une Date = dDateDebut nNbJours est un entier BOUCLE SI PAS JourFerie(dDateTest) _ET_ PAS DateVersJour(dDateTest) _DANS_ (6,7) ALORS nNbJours++ dDateTest..Jour++ A FAIRE TANTQUE dDateTest < DateFin RENVOYER nNbJours
Faites attention, la fonction JourFérié ne fait que tester si un jour est férié par rapport à des données préalablement initialisées (JourFériéAjoute).
Pour simplifier, ces fonctions ne font que manipuler un tableau assocatif global.
D'autre part, cela ne règle pas du tout la problématique de définition des jours fériés. Quelquesoit votre méthode pour savoir si un jour est férié, vous devez obligatoirement tenir une liste de ces jours que ce soit en dur ou dans les données de l'application.
Enfin, personnellement, je penche pour l'utilisation systématique de tables "calendrier" qui facilitent le travail sur les données temporelles comme ça a déjà été dit.
Je n'ai jamais utilisé cette fonction, et je me suis fait avoir.
Je pensais en effet que la liste était pré-chargée par les jours fériés du pays.
Bref, l'utilisation m'en parait pourtant intéressante car elle permet d'avoir une visualisation de ces jours sur un champ Calendrier, quitte à faire l'ajout manuellement au démarrage de l'application.
Si quelqu'un repasse par là, j'ai fait ça, ouvert aux avis. Je l'ai testé avec des sites donnant les jours ouvrés (je ne parle bien que des jours ouvrés, j'ai pas eu besoin de paramétriser les fonctions pour gérer les jours ouvrables)
Je m'inspire de la toute première fonction donnée par Bowen
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 PROCÉDURE GLOBALE EstJourOuvre(dDate est Date) bEstJourOuvre est un booléen SI PAS DateVersJour(dDate) _DANS_ (6,7) _ET_ PAS JourFérié(dDate) ALORS bEstJourOuvre=Vrai RENVOYER bEstJourOuvre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 PROCÉDURE GLOBALE NombreJoursOuvresEntreDeuxDates(dDateDebut est Date, dDateFin est Date) //Les bornes sont incluses car si on veut les jours ouvrés entre le 1er et le 31, le 1er et le 31 ca compte aussi si ce sont des jours non-weekend et non-fériés //Les samedi dimanche et jours fériés sont exclus dDebut est une Date = dDateDebut nNbJoursOuvres est un entier SI dDateDebut = dDateFin ALORS SI EstJourOuvre(dDateDebut) ALORS nNbJoursOuvres++ SINON BOUCLE SI PAS DateVersJour(dDebut) _DANS_ (6,7) _ET_ PAS JourFérié(dDebut) ALORS nNbJoursOuvres++ dDebut..Jour++ À FAIRE TANTQUE dDebut <= dDateFin FIN RENVOYER nNbJoursOuvres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PROCÉDURE GLOBALE NombreJoursOuvresDansMois(numeroMois est entier, annee est entier) dDate est Date = NumériqueVersChaîne(annee) + Droite("00"+NumériqueVersChaîne(numeroMois),2) + "01" RENVOYER NombreJoursOuvresEntreDeuxDates(PremierJourDuMois(dDate),DernierJourDuMois(dDate))Bien sur l'utilisation de JourFerie() implique l'appel de cette fonction en début de projet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 PROCÉDURE GLOBALE NombreJoursOuvresDansAnnee(annee est entier) nbJoursOuvres est entier POUR i = 1 _À_ 12 dDate est Date = NumériqueVersChaîne(annee) + Droite("00"+NumériqueVersChaîne(i),2) + "01" nbJoursOuvres += NombreJoursOuvresEntreDeuxDates(PremierJourDuMois(dDate),DernierJourDuMois(dDate)) FIN RENVOYER nbJoursOuvres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 PROCÉDURE GLOBALE JourFerieGere() JourFériéSupprimeTout() // Initialisation des 11 jours fériés communs aux départements français et DOM/TOM JourFériéAjoute("0101") // 1er Janvier JourFériéAjoute(jfLundiDePâques) // Lundi de Pâques JourFériéAjoute("0501") // 1er Mai JourFériéAjoute("0508") // 8 Mai JourFériéAjoute(jfJeudiDeLAscension) // Jeudi de l'Ascension JourFériéAjoute(jfLundiDePentecôte) // Lundi de Pentecôte JourFériéAjoute("0714") // 14 Juillet JourFériéAjoute("0815") // 15 Août (Assomption) JourFériéAjoute("1101") // Toussaint JourFériéAjoute("1111") // 11 Novembre JourFériéAjoute("1225") // Noël
Bonjour,
En France, les jours ouvrés doivent se traiter au cas par cas selon les conventions collectives.
Concernant les jours fériés, d'après le code du travail, seul le 1° Mai est chômé.
Exception
-Alsace Moselle 26 décembre et Vendredi Saint (article L. 3134-16 du code du travail) en pinaillant, on pourrait ajouter, concernant le Vendredi Saint, qu'il faut qu'il y ait un temple protestant ou une église mixte dans la ville de l'entreprise
Pour les départements et territoires suivants, l'article L. 3422-2 du code du travail prévoit que les jours suivants sont chômés
Le 27 avril à Mayotte ;
Le 22 mai en Martinique ;
Le 27 mai en Guadeloupe et à Saint-Martin ;
Le 10 juin en Guyane ;
Le 9 octobre à Saint-Barthélemy ;
Le 20 décembre à La Réunion.
Il en va de même por le samedi et le dimanche. La loi prévoit un repos hebdomadaire d’une durée minimale de 24 heures consécutives et 11 heures de repos quotidien.
Merci @Voroltinquo
Précision donc, ceci correspondait au besoin d'un de mes clients. La fonction JourFerieGere() est à adapter mais la fonction EstJourOuvre() aussi du coup, pour tenir compte des spécificités indiquées.
Bonjour,
Pour dé-pinailler. En Alsace-Moselle, tout le monde prend le 26 décembre + vendredi saint. Personne ne regarde s'il y a un temple protestant dans les parages.![]()
De même que le jour de la braderie de Lille de nombreuses administrations sont fermées.
Toutefois cela n'empêche pas d'avoir ce genre de rappels .
Donc, le cas par cas (on était sur une note du bâtiment donc le KParK) est de rigueur.
... et je ne parle pas des ponts qui eux non plus ne sont pas automatiques, ni du jour de solidarité qui peut varier si l'employé concerné est intérimaire ou pas
Partager