OVH Cloud OVH Cloud

Jours ouvrés

2 réponses
Avatar
HA
Bonjour

Comment compter le nombre de jours ouvres entre deux dates?

2 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Voici un code à utiliser :

Tu dois utiliser la fonction NbOpenDay()

***********************************************
Public Function fPaques(wAn%) As Date
'Pâques est le dimanche qui suit le quatorzième jour de la
'Lune qui tombe le 21 mars ou immédiatement après

Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH%
Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP%

wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19
ans
wB = wAn 100 'Calcul du siècle
wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle
wD = wB 4
wE = wB Mod 4
wF = (wB + 8) 25
wG = (wB - wF + 1) 3
wH = (19 * wA + wB - wD - wG + 15) Mod 30
wI = wC 4
wK = wC Mod 4
wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7
wM = (wA + 11 * wH + 22 * wL) 451
wN = (wH + wL - 7 * wM + 114) 31 'détermine le mois
wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour

fPaques = DateSerial(wAn, wN, wP + 1)

'** A titre d'info :************'
'** dtVenSaint = fPaques - 2****'
'** dtLunPaq = fPaques + 1******'
'** dtAscension = fPaques + 39**'
'** dtDimPent = fPaques + 49****'
'** dtLunPent = fPaques + 50****'

End Function

Public Function JourFérié(dtDate As Date) As Boolean

Dim dtPaques As Date
dtPaques = fPaques(Year(dtDate))
Select Case dtDate
Case CDate("01/01/" & Year(dtDate)) 'Jour de l'an
JourFérié = True
Case CDate("01/05/" & Year(dtDate)) 'Fête du travail
JourFérié = True
Case CDate("08/05/" & Year(dtDate)) 'Victoire de 1945
JourFérié = True
Case CDate("14/07/" & Year(dtDate)) 'Fête nationale
JourFérié = True
Case CDate("15/08/" & Year(dtDate)) 'Assomption
JourFérié = True
Case CDate("01/11/" & Year(dtDate)) 'Toussaint
JourFérié = True
Case CDate("11/11/" & Year(dtDate)) 'Armistie 1918
JourFérié = True
Case CDate("25/12/" & Year(dtDate)) 'Noël
JourFérié = True
Case dtPaques + 1 'Lundi de Pâques
JourFérié = True
Case dtPaques + 39 'Ascension
JourFérié = True
Case dtPaques + 50 'Lundi de pentcôte
JourFérié = True
Case Else
JourFérié = False
End Select

End Function

Public Function NbOpenDay(dtDeb As Date, dtFin As Date) As Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourFérié(dtDate As Date)

Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim resultat As Integer

If IsNull(dtDeb) Or IsNull(dtFin) Then
NbOpenDay = 0
Exit Function
ElseIf Not IsDate(dtDeb) Or Not IsDate(dtFin) Then
NbOpenDay = 0
Exit Function
ElseIf dtDeb > dtFin Then
Dim dhTemp As Date
dhTemp = dtDeb
dtDeb = dtFin
dtFin = dhTemp
End If

dblDateDeb = CDbl(dtDeb)
dblDateFin = CDbl(dtFin)

Do Until dblDateDeb > dblDateFin
DateCourante = CDate(dblDateDeb)
If WeekDay(DateCourante) <> 1 And _
WeekDay(DateCourante) <> 7 And _
JourFérié(DateCourante) = False Then
resultat = resultat + 1
End If
dblDateDeb = dblDateDeb + 1
Loop
NbOpenDay = resultat

End Function
***********************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"HA" a écrit dans le message news:
#
Bonjour

Comment compter le nombre de jours ouvres entre deux dates?




Avatar
Raymond [mvp]
Bonjour.

lire les pages:
http://access.seneque.free.fr/dates1.htm#Jours_Ouvrés
http://mypage.bluewin.ch/w.stucki/CalculsDates.htm
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"HA" a écrit dans le message de
news:%
Bonjour

Comment compter le nombre de jours ouvres entre deux dates?