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
| Public Function NbHeur(D, F) As String
Dim H As Long
Dim M As Long
Dim EcarJ As Long
Dim EcarMin As Long
Dim ScanJ As Long
Dim Normal As MyDate
Dim Lundi As MyDate
Dim Vendredi As MyDate
NbHeur = ""
Normal.Deb = "00:00:00": Normal.Fin = " 00:00:00": Normal.FinJour = 1: Normal.Dur = DateDiff("n", Normal.Deb, CDate(Normal.Fin) + Normal.FinJour)
Lundi.Deb = "00:05:00": Lundi.Fin = " 00:00:00": Lundi.FinJour = 1: Lundi.Dur = DateDiff("n", Lundi.Deb, CDate(Lundi.Fin) + Lundi.FinJour)
Vendredi.Deb = "00:00:00": Vendredi.Fin = " 22:00:00": Vendredi.FinJour = 0: Vendredi.Dur = DateDiff("n", Vendredi.Deb, CDate(Vendredi.Fin) + Vendredi.FinJour)
EcarJ = DateDiff("d", CDate(D), CDate(F))
M = 0
For ScanJ = 0 To EcarJ
If Ferie(CDate(D) + ScanJ) = False Then
Select Case Day(CDate(D) + ScanJ)
Case 2
M = M + Lundi.Dur
Case 6
M = M + Vendredi.Dur
Case Else
M = M + Normal.Dur
End Select
Select Case Day(CDate(D) + ScanJ)
Case 2
If CDate(Format(CDate(D) + ScanJ, "dd/mm/yyyy")) = Format(CDate(D), "dd/mm/yyyy") And CDate(Format(D, "hh:mm:nn")) > Lundi.Deb Then M = M - DateDiff("n", Lundi.Deb, CDate(Format(D, "hh:mm:nn")))
If CDate(Format(CDate(D) + ScanJ, "dd/mm/yyyy")) = Format(CDate(F), "dd/mm/yyyy") And CDate(Format(F, "hh:mm:nn")) < CDate(Lundi.Fin) + Lundi.FinJour Then M = M - DateDiff("n", CDate(Format(F, "hh:mm:nn")), CDate(Lundi.Fin) + Lundi.FinJour)
Case 6
If CDate(Format(CDate(D) + ScanJ, "dd/mm/yyyy")) = Format(CDate(D), "dd/mm/yyyy") And CDate(Format(D, "hh:mm:nn")) > Vendredi.Deb Then M = M - DateDiff("n", Vendredi.Deb, CDate(Format(D, "hh:mm:nn")))
If CDate(Format(CDate(D) + ScanJ, "dd/mm/yyyy")) = Format(CDate(F), "dd/mm/yyyy") And CDate(Format(F, "hh:mm:nn")) < CDate(Vendredi.Fin) + Vendredi.FinJour Then M = M - DateDiff("n", CDate(Format(F, "hh:mm:nn")), CDate(Vendredi.Fin) + Vendredi.FinJour)
Case Else
If CDate(Format(CDate(D) + ScanJ, "dd/mm/yyyy")) = Format(CDate(D), "dd/mm/yyyy") And CDate(Format(D, "hh:mm:nn")) > Normal.Deb Then M = M - DateDiff("n", Normal.Deb, CDate(Format(D, "hh:mm:nn")))
If CDate(Format(CDate(D) + ScanJ, "dd/mm/yyyy")) = Format(CDate(F), "dd/mm/yyyy") And CDate(Format(F, "hh:mm:nn")) < CDate(Normal.Fin) + Normal.FinJour Then M = M - DateDiff("n", CDate(Format(F, "hh:mm:nn")), CDate(Normal.Fin) + Normal.FinJour)
End Select
End If
Next
If M > 0 Then
H = (M - (M Mod 60)) / 60
M = M Mod 60
NbHeur = Format(H, "00H:") & Format(M, "00M")
End If
End Function |
Partager