begin process at 2012 05 27 06:04:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date/Heure

 > CALCUL DU NOMBRE DE JOURS OUVRABLES ENTRE DEUX DATES

CALCUL DU NOMBRE DE JOURS OUVRABLES ENTRE DEUX DATES


 Information sur la source

Note :
5,67 / 10 - par 3 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date/Heure Classé sous :calculer, jour, ouvrable, date Niveau :Initié Date de création :14/11/2001 Vu :49 797

Auteur : steve

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

mettre ces deux fonctions dans la page ou dans un Include et appeler la fonction nbjour...(datededebut,datedefin)

Source

  • function nbjourouvrable(datdeb,datfin)
  • if datdeb="" or datfin="" then exit function
  • nbjourtot = DateDiff("d",datdeb,datfin) + 1
  • for i=1 to nbjourtot
  • if ferie(datdeb) then
  • nbjourtot = nbjourtot - 1
  • end if
  • datdeb=DateAdd("d",1,datdeb)
  • next
  • nbjourouvrable=nbjourtot
  • End function
  • function ferie(Jour)
  • if jour="" then exit function
  • Dim JJ,AA
  • Dim NbOr, Epacte
  • Dim PLune, Paques, Ascension, Pentecote
  • JJ = Day(Jour)
  • mm = Month(Jour)
  • AA = Year(Jour)
  • If JJ = 1 And mm = 1 Then ferie = True: Exit Function '1 Janvier
  • If JJ = 1 And mm = 5 Then ferie = True: Exit Function '1 Mai
  • If JJ = 8 And mm = 5 Then ferie = True: Exit Function '8 Mai
  • If JJ = 14 And mm = 7 Then ferie = True: Exit Function '14 Juillet
  • If JJ = 15 And mm = 8 Then ferie = True: Exit Function '15 Août
  • If JJ = 1 And mm = 11 Then ferie = True: Exit Function '1 Novembre
  • If JJ = 11 And mm = 11 Then ferie = True: Exit Function '11 Novembre
  • If JJ = 25 And mm = 12 Then ferie = True: Exit Function '25 Décembre
  • NbOr = (AA Mod 19) + 1
  • Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
  • PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30)
  • If Epacte = 24 Then PLune = PLune - 1
  • If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
  • Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques
  • If JJ = Day(Paques) And mm = Month(Paques) Then ferie=true : Exit Function
  • Ascension = Paques + 38 'Ascension
  • If JJ = Day(Ascension) And mm = Month(Ascension) Then ferie=true : Exit Function
  • Pentecote = Ascension + 11 'Pentecote
  • If JJ = Day(Pentecote) And mm = Month(Pentecote) Then ferie=true : Exit Function
  • ferie = False
  • Dim numjour
  • numjour=weekday(jour,vbmonday) 'fixe à 6 et 7 la valeur du samedi & dimanche
  • if numjour=6 or numjour=7 then ferie=true : Exit function
  • End function
function nbjourouvrable(datdeb,datfin)
if datdeb="" or datfin="" then exit function

nbjourtot = DateDiff("d",datdeb,datfin) + 1

for i=1 to nbjourtot

  if ferie(datdeb) then
    nbjourtot = nbjourtot - 1
  end if

 datdeb=DateAdd("d",1,datdeb)

next

nbjourouvrable=nbjourtot

End function

function ferie(Jour)
if jour="" then exit function
Dim JJ,AA
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote

JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour)

If JJ = 1 And mm = 1 Then ferie = True: Exit Function     '1 Janvier
If JJ = 1 And mm = 5 Then ferie = True: Exit Function     '1 Mai
If JJ = 8 And mm = 5 Then ferie = True: Exit Function     '8 Mai
If JJ = 14 And mm = 7 Then ferie = True: Exit Function   '14 Juillet
If JJ = 15 And mm = 8 Then ferie = True: Exit Function   '15 Août
If JJ = 1 And mm = 11 Then ferie = True: Exit Function   '1 Novembre
If JJ = 11 And mm = 11 Then ferie = True: Exit Function '11 Novembre
If JJ = 25 And mm = 12 Then ferie = True: Exit Function '25 Décembre

NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30)
If Epacte = 24 Then PLune = PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1

Paques = PLune - Weekday(PLune) + vbMonday + 7  'Paques
If JJ = Day(Paques) And mm = Month(Paques) Then ferie=true : Exit Function

Ascension = Paques + 38 'Ascension
If JJ = Day(Ascension) And mm = Month(Ascension) Then ferie=true : Exit Function

Pentecote = Ascension + 11 'Pentecote
If JJ = Day(Pentecote) And mm = Month(Pentecote) Then ferie=true : Exit Function
ferie = False
Dim numjour
numjour=weekday(jour,vbmonday)   	'fixe à 6 et 7 la valeur du samedi & dimanche
if numjour=6 or numjour=7 then ferie=true : Exit function
End function 

 Conclusion

Attention l'appel de la fonction nbjourouvrable faite appel a la fonction ferie qui elle peut etre appellée indépendamment pour savoir si un jour est férié


 Sources de la même categorie

CONVERSION D'UNE DATE/HEURE STANDARD VERS DATE/HEURE CONFORM... par processus
CALCUL DE L'AGE D'UNE PERSONNE (ASP VBSCRIPT) par bluedemon
CONVERSION DE GMT À LOCAL ET DE LOCAL À GMT par revolt
Source avec Zip CALENDRIER DYNAMIQUE AVEC JOURS FERIES par label97
SAISIR DATE FR DANS MYSQL par jeckel

 Sources en rapport avec celle ci

Source avec Zip CALENDRIER DYNAMIQUE AVEC JOURS FERIES par label97
DATE AVEC LE DECALAGE HORAIRE, par tidave
CALCUL DU NOMBRE DE JOURS OUVRÉS ENTRE DEUX DATES par jessie
Source avec Zip CALCULER LE NOMBRE DE JOURS FÉRIÉS ENTRE 2 DATES par jessie
CALCUL DU NOMBRE DE JOURS ENTRE DEUX DATES EN ASP par hugoboss2412

Commentaires et avis

Commentaire de Spaceduck le 18/02/2003 16:57:37

est-ce que ton code gère les années bissextiles ?

Commentaire de lespauloctantis le 03/07/2003 14:56:29

il fonctionne pas ton code.....

Commentaire de lespauloctantis le 03/07/2003 15:08:53

Nombre d'arguments ou affectation de propriété incorrects: 'nbjourouvrable'

comprends d'ou ça vient.....

Commentaire de djsteve le 03/07/2003 15:31:53

donne + de détails si tu veux de l'aide ....
Tu es le premier qui a des problèmes avec cette fonction !!

Commentaire de lespauloctantis le 03/07/2003 16:35:06

dans ce que je viens de t'envoyer la variable qui contient le nombre de jours n'est pas envoyée ds la base...normalement je la met mais je t'ai envoyé un prog ou je m'essayait a des tests

Commentaire de juvamine le 10/09/2004 10:17:07

Merci !!! je fais pas d'ASP mais j'adapterai :-) j'avais bien besoin de ce genre de fonction, bonne prise de tête et tu dois bien connaître le calendrier now !!

sur ce a+
juva

Commentaire de bnj le 30/05/2005 15:05:13

Depuis 2005, n'oubliez pas de supprimer la Pentecote en commantant ces 2 lignes :

Pentecote = Ascension + 11 'Pentecote
If JJ = Day(Pentecote) And mm = Month(Pentecote) Then ferie=true : Exit

Sinon ce joli code me semble marcher assez bien.

Bnj

Commentaire de teckmicro2008 le 05/03/2009 09:56:03

Bonjour : merci a tous ceux qui pourrons m'aider !!

j'aimerais me servir de ce code source dans access 2003 !

j'ai crer une table : datedebut et datefin

ensuite créer un formulaire : et la j'aimerais afficher le nb de jour écouler !

je suis perdu dans la façon de maitre en place ce code source !!

Débutant dans les codes sources !

si ont peut m'expliquer par étape ! ça serais cool ou un exemple !

Merci beaucoup de votre Aide !!!!!

teck

Commentaire de djsteve le 05/03/2009 10:44:49

de ce que je me souviens du fonctionnement dans acces .
tu colles les deux fonction dans ton code et tu appelles la fonction principale :
nbjours=nbjourouvrable(datedebut ,datefin)
en ayant défini ta variable nbjours au préalable et normalement c'est bon.

Commentaire de slymalen le 25/05/2010 22:37:18

Bonsoir
Tout d'abord merci pour ce code ma foi fort utile pour comptabiliser les journées travaillées. J'ai essayé de l'adapter pour qu'il fonctionne quand le samedi ou le dimanche sont travaillés. Ca fonctionne très bien, cependant je n'arrive pas à afficher le nombre de jour férié de chaque mois. Quelle variable utiliser ?
Merci de votre aide.
Slymalen

Commentaire de djsteve le 26/05/2010 10:45:09

Pour avoir le nombre de jour férié entre deux dates il suffit de faire le contraire de nbjourouvrable.
du genre :
function nbjourferie(datdeb,datfin)
if datdeb="" or datfin="" then exit function
nbjourferie=0
nbjourtot = DateDiff("d",datdeb,datfin) + 1

for i=1 to nbjourtot

    if ferie(datdeb) then
       nbjourferie= nbjourferie + 1
    endif

    datdeb=DateAdd("d",1,datdeb)

next



End function

Commentaire de slymalen le 26/05/2010 23:50:12

Impec, merci beaucoup

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

mise à jour champ date sur access par update (SQL) [ par caussieu ] Bonjour,Voici le code utilisé pour mettre à jour la base de données Access sous ASP / SQL : sql = "Update animations Set animation='"&animation&"', li boite alerte [ par rony ] le message d'alerte suivant ne fonctionne pas pourquoi ?merci1/ tout d'abord je récupére ma variable "dates" de monformulaire.comme ceci&lt;% dates Exercices Excel [ par gwen ] Bonjour, Dans le cadre de ma formation, je dois effectuer quelques exercices sur excel. Afin de savoir si je suis sur la bonne piste, je voudrais vous recupération de la date du jour [ par suzy26 ] J'ai crée des formulaires d'enregistrement, de modification et de suppression. Dans la cas d'un enregistrement, j'ai dans ma base de données un champs Jour de la date [ par Bruto ] Comment puis-je récupérer le jour d'une date de sorte que j'entre le 22/12/2003 et que je récupère Lundi ?Merci Bruto pB date!!! [ par elky ] Dans un report ASP j'affiche la différence entre les données du jour moins celles dela veille.Pour ce faire je sélectionne dans une liste la date de s Date bizarre [ par nickadele ] j'explique mon prob.j'ai une application asp sur une db access via un dsn ODBC, je navigue dans mes pages, je fait des ajouts d'enregistrements à ma b date et heure du jour dans un textbox d'une formview en asp.net [ par caudette ] bonjour,j'aimerai dans une formview avec plusieurs texbox affecté une date te heure du jour, à un autre texbox affecté le nom de l'utilisateur affecté recuperer date de mise a jour [ par akimodo ] AkimodoNewbieMaisPasPourLongtemps'lut,je voudrais indiquer la date de mise à jour des pages, la grosse partie des pages se trouve dans une base access Detailsview et Calendar [ par herve_labenere ] Bonjour,Je cherche à mettre à jour le champs date_prev_notif de ma table à partir de la date sélectionnée dans mon objet Calendar. - En faisant un Eva


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,106 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales