[VBA] Datediff avec prise en compte des WE et/ou des jours ouvrés ?
Datediff avec prise en compte des WE et/ou des jours ouvrés ? [VBA] - VB/VBA/VBS - Programmation
MarshPosté le 22-01-2020 à 16:57:35
Hello tout le monde,
Je galère pour trouver un moyen de calculer la différence en jour/heures/minutes entre deux dates mais sans tenir compte par exemple des heures fermées et des WE. Ex. Vendredi 17 janvier @ 16:00 > Lundi 20 janvier @ 09:00 Je devrais obtenir : 0j 3h 00m car par ex les heures ouvrées sont comprises entre 8h et 18h et fermé le WE ! Actuellement si je fais le calcul j'obtiens 2j 17h ...
J'ai trouvé une fonction qui me permet de récupérer le nombre de jours entre deux dates sans tenir compte des WE ... mais ca ne répond pas a mon besoin de prendre en compte uniquement les heures ouvrées
Code :
Function BusinessDateDiff(ByVal StartDate As Date, ByVal EndDate As Date, _
Optional ByVal SaturdayIsHoliday As Boolean = True) As Long
Dim incr As Date
' ensure we don't take time part into account
StartDate = Int(StartDate)
EndDate = Int(EndDate)
' incr can be +1 or -1
If StartDate < EndDate Then incr = 1 Else incr = -1
Do Until StartDate = EndDate
' skip to previous or next day
StartDate = StartDate + incr
If Weekday(StartDate) <> vbSunday And (Weekday(StartDate) <> vbSaturday _
Or Not SaturdayIsHoliday) Then
' if it's a weekday add/subtract one to the result
BusinessDateDiff = BusinessDateDiff + incr
End If
Loop
' when the loop is exited the function name
' contains the correct result
End Function
Si vous avez une idée ou des pistes de reflexions je suis preneur ! Merci pour votre aide !
Marsh Posté le 22-01-2020 à 16:57:35
Hello tout le monde,
Je galère pour trouver un moyen de calculer la différence en jour/heures/minutes entre deux dates mais sans tenir compte par exemple des heures fermées et des WE.
Ex.
Vendredi 17 janvier @ 16:00 > Lundi 20 janvier @ 09:00
Je devrais obtenir : 0j 3h 00m car par ex les heures ouvrées sont comprises entre 8h et 18h et fermé le WE !
Actuellement si je fais le calcul j'obtiens 2j 17h ...
J'ai trouvé une fonction qui me permet de récupérer le nombre de jours entre deux dates sans tenir compte des WE ... mais ca ne répond pas a mon besoin de prendre en compte uniquement les heures ouvrées
Si vous avez une idée ou des pistes de reflexions je suis preneur !
Merci pour votre aide !