1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| Public Function DateFin(NbJours As Variant, DateDébut As Variant, bCal As Boolean) As Variant
If NbJours = 0 Then
DateFin = Null
ElseIf IsDate(DateDébut) Then
If bCal = True Then '--- calcul en jours calendriers
DateFin = DateAdd("d", NbJours, DateDébut) - 1
Else '--- calcul en jours ouvrés
Dim i As Long, tmpDate As Date
tmpDate = DateDébut
i = 1
Do While i < NbJours
tmpDate = tmpDate + 1
If Weekday(tmpDate, vbSunday) < 6 Then '--- est un jour de semaine allant de dimanche à jeudi
If DCount("*", "tJF", "JFDate=" & CDbl(tmpDate)) = 0 Then '--- n'est pas un jour férié
i = i + 1
End If
End If
Loop
DateFin = tmpDate
End If
Else
DateFin = Null
End If
End Function
Public Function DateReprise(DateFinCongé As Variant) As Variant
Dim i As Long, tmpDate As Date
If IsDate(DateFinCongé) Then
tmpDate = DateFinCongé
i = 0
Do
tmpDate = tmpDate + 1
If Weekday(tmpDate, vbSunday) < 6 Then '--- est un jour de semaine allant de dimanche à jeudi
If DCount("*", "tJF", "JFDate=" & CDbl(tmpDate)) = 0 Then '--- n'est pas un jour férié
i = i + 1
End If
End If
Loop While i < 1
DateReprise = tmpDate
Else
DateReprise = Null
End If
End Function
Public Function NbJCF(DateDébut As Variant, DateFin As Variant) As Variant '--- calcul nb jours vendredis ou fériés (et pas les samedis)
Dim i As Long, tmpDate As Date
If IsDate(DateDébut) Then
tmpDate = DateDébut
i = 0
While tmpDate <= DateFin
If Weekday(tmpDate, vbSunday) = 6 Then '--- sunday = dimanche = 1er jour travaillé ---> 6=vendredi, 7=samedi
i = i + 1
'Debug.Print "Vendredi: " & Format(tmpDate, "yyyy-mm-dd")
ElseIf DCount("*", "tJF", "JFDate=" & CDbl(tmpDate)) > 0 Then '--- est un jour férié
i = i + 1
'Debug.Print "Férié: " & Format(tmpDate, "yyyy-mm-dd")
End If
tmpDate = tmpDate + 1
Wend
NbJCF = i
Else
NbJCF = Null
End If
End Function |
Partager