J'ai un problème : j'ai récupéré un module modDay qui me calcule le
nombre de jours ouvrés dans une période. Voilà le HIC. Quand une personne est
en arrêt maladie et que durant cet arrêt, il y a un samedi ou un dimanche qui
est un jour férié, ce jour doit être compté comme jour travaillé.
Il faut créer un autre module qui ressemble à modDay. J'ai fait
quelques tests en vain.
Quelqu'un peux t-il m'aider ?
Merci d'avance.
J'ai un problème : j'ai récupéré un module modDay qui me calcule le
nombre de jours ouvrés dans une période. Voilà le HIC. Quand une personne est
en arrêt maladie et que durant cet arrêt, il y a un samedi ou un dimanche qui
est un jour férié, ce jour doit être compté comme jour travaillé.
Il faut créer un autre module qui ressemble à modDay. J'ai fait
quelques tests en vain.
Quelqu'un peux t-il m'aider ?
Merci d'avance.
J'ai un problème : j'ai récupéré un module modDay qui me calcule le
nombre de jours ouvrés dans une période. Voilà le HIC. Quand une personne est
en arrêt maladie et que durant cet arrêt, il y a un samedi ou un dimanche qui
est un jour férié, ce jour doit être compté comme jour travaillé.
Il faut créer un autre module qui ressemble à modDay. J'ai fait
quelques tests en vain.
Quelqu'un peux t-il m'aider ?
Merci d'avance.
J'ai un problème : j'ai récupéré un module modDay qui me calcule le
nombre de jours ouvrés dans une période. Voilà le HIC. Quand une personne est
en arrêt maladie et que durant cet arrêt, il y a un samedi ou un dimanche qui
est un jour férié, ce jour doit être compté comme jour travaillé.
Il faut créer un autre module qui ressemble à modDay. J'ai fait
quelques tests en vain.
Quelqu'un peux t-il m'aider ?
Merci d'avance.
J'ai un problème : j'ai récupéré un module modDay qui me calcule le
nombre de jours ouvrés dans une période. Voilà le HIC. Quand une personne est
en arrêt maladie et que durant cet arrêt, il y a un samedi ou un dimanche qui
est un jour férié, ce jour doit être compté comme jour travaillé.
Il faut créer un autre module qui ressemble à modDay. J'ai fait
quelques tests en vain.
Quelqu'un peux t-il m'aider ?
Merci d'avance.
J'ai un problème : j'ai récupéré un module modDay qui me calcule le
nombre de jours ouvrés dans une période. Voilà le HIC. Quand une personne est
en arrêt maladie et que durant cet arrêt, il y a un samedi ou un dimanche qui
est un jour férié, ce jour doit être compté comme jour travaillé.
Il faut créer un autre module qui ressemble à modDay. J'ai fait
quelques tests en vain.
Quelqu'un peux t-il m'aider ?
Merci d'avance.
C'est vrai que sans le module, ca va être difficile de m'aider.
Voilà le Module modDay:
Option Compare Database
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é = False
Case Else
JourFérié = False
End Select
End Function
Public Function NbDayOpen(DateDeb As Date, DateFin As Date) As Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourFérié(UneDate As Date)
Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim Resultat As Integer
If IsNull(DateDeb) Or IsNull(DateFin) Then
NbDayOpen = 0
Exit Function
ElseIf Not IsDate(DateDeb) Or Not IsDate(DateFin) Then
NbDayOpen = 0
Exit Function
ElseIf DateDeb > DateFin Then
Dim dhTemp As Date
dhTemp = DateDeb
DateDeb = DateFin
DateFin = dhTemp
End If
dblDateDeb = CDbl(DateDeb)
dblDateFin = CDbl(DateFin)
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
NbDayOpen = Resultat
End Function
Merci d'avance pour votre aide.
C'est vrai que sans le module, ca va être difficile de m'aider.
Voilà le Module modDay:
Option Compare Database
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é = False
Case Else
JourFérié = False
End Select
End Function
Public Function NbDayOpen(DateDeb As Date, DateFin As Date) As Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourFérié(UneDate As Date)
Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim Resultat As Integer
If IsNull(DateDeb) Or IsNull(DateFin) Then
NbDayOpen = 0
Exit Function
ElseIf Not IsDate(DateDeb) Or Not IsDate(DateFin) Then
NbDayOpen = 0
Exit Function
ElseIf DateDeb > DateFin Then
Dim dhTemp As Date
dhTemp = DateDeb
DateDeb = DateFin
DateFin = dhTemp
End If
dblDateDeb = CDbl(DateDeb)
dblDateFin = CDbl(DateFin)
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
NbDayOpen = Resultat
End Function
Merci d'avance pour votre aide.
C'est vrai que sans le module, ca va être difficile de m'aider.
Voilà le Module modDay:
Option Compare Database
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é = False
Case Else
JourFérié = False
End Select
End Function
Public Function NbDayOpen(DateDeb As Date, DateFin As Date) As Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourFérié(UneDate As Date)
Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim Resultat As Integer
If IsNull(DateDeb) Or IsNull(DateFin) Then
NbDayOpen = 0
Exit Function
ElseIf Not IsDate(DateDeb) Or Not IsDate(DateFin) Then
NbDayOpen = 0
Exit Function
ElseIf DateDeb > DateFin Then
Dim dhTemp As Date
dhTemp = DateDeb
DateDeb = DateFin
DateFin = dhTemp
End If
dblDateDeb = CDbl(DateDeb)
dblDateFin = CDbl(DateFin)
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
NbDayOpen = Resultat
End Function
Merci d'avance pour votre aide.