La fonction "TrancheHoraire" ci-dessous permet de réaliser le calcul sur une tranche horaire de 1 à 23. Bien entendu, il faut pour cela que le fichier soit du type .xlsm.
Celle-ci ne fonctionne que si les heures début ou fin sont formatées comme dans le tableau ou si vides, les autres cas provoquent une erreur (comme 0 par exemple).
Toutefois, vu le nombre de cellules avec cette fonction, le temps de réponse est considérablement ralenti. Il faudrait envisager plutôt de réaliser ce calcul via une procédure où on ne remplirait les cellules qu'avec le résultat de la fonction.
La fonction est à placer dans un module standard.
Option Explicit
Function TrancheHoraire(ByVal HeureDebut As Variant, ByVal HeureFin As Variant, ByVal Tranche As Integer) As Integer
Dim I As Integer
Dim TabDebut As Variant, TabFin As Variant
Dim MinuteDebut As Integer, MinuteFin As Integer
TrancheHoraire = 0
If HeureDebut = "" Or HeureFin = "" Then Exit Function
TabDebut = Split(HeureDebut, "h"): MinuteDebut = TabDebut(0) * 60 + TabDebut(1)
TabFin = Split(HeureFin, "h"): MinuteFin = TabFin(0) * 60 + TabFin(1)
For I = MinuteDebut To MinuteFin - 1
Select Case I
Case Tranche * 60 To Tranche * 60 + 59
TrancheHoraire = TrancheHoraire + 1
End Select
Next I
End Function