Option Explicit
Dim DateInter As String
Dim Valferie As Integer
Sub ValideFerie() 'recherche si date est jour férié
Dim c As Variant
Valferie = 0
For Each c In [AI4:AI16]
If c Like DateInter Then
c.Select
Valferie = 1
Exit Sub
End If
Next
Valferie = 0
End Sub
Sub calculheure()
Dim d1 As Date
Dim DateDeb As String
Dim DateFin As String
Dim Inter1 As String, Inter2 As String, Inter3 As String, Inter4 As String, Inter5 As String
Dim compteA%, compteB%, compteC%
DateDeb = Format(Cells(3, 37), "dd/mm/yyyy hh:mm")
DateFin = Format(Cells(3, 38), "dd/mm/yyyy hh:mm")
DateInter = DateDeb
While DateInter < DateFin
d1 = DateAdd("h", 1, DateInter)
Debug.Print ">>>" & d1 & " : " & Format(d1, "dd/mm/yyyy hh:mm")
DateInter = d1
'joursemaine: dimanche=1, lundi=2, mardi=3, mercredi=4, jeudi=5, vendredi=6, samedi=7
'ValideFerie'verification si jour ferié
'pour Samedi, dimanche et férié
If Weekday(DateInter) = 1 Or Weekday(DateInter) = 7 Or Valferie = 1 Then
Inter1 = Format(DateInter, "dd/mm/yyyy 07:00:00")
Inter2 = Format(DateInter, "dd/mm/yyyy 20:00:00")
If DateInter >= Inter1 And DateInter <= Inter2 Then
compteC = compteC + 1
Else
compteB = compteB + 1
End If
End If
Wend
Range("ak5").Value = compteA
Range("ak6").Value = compteB
Range("ak7").Value = compteC
End Sub