faire un calcul de nombre d'heures et minutes avec prise en compte des heures de jour et nuit .
j'ai deux plages horaires : les heures de nuit ( de18h à 9h ) et les heures de jour (de 9h à 18h).
Si j'indique une heure et date de début ( exemple : 30/07/2001 14:55 ) et une heure et date de fin (exemple : 01/08/2001 12:00),
Excel doit me donner le nombre d'heures et minutes de nuit(dans notre cas: 30 heures) et le nombre d'heure et minutes de jour (dans notre cas: 15 heures et 5 minutes )
une fonction VBA qui renvoie le temps de jour et le temps de nuit (dans cet ordre et à la minute près) dans un tableau vertical.
Pour l'utiliser, il faut sélectionner deux cellules en colonne (par ex C1 et C2), entrer dans le barre de formules :
=NuitEtJour(A1;B1) et valider en formule matricielle (Ctrl+Maj+Entrée).
Les cellules d'arrivée (C1 et C2) doivent être au format [h]:mm.
Function NuitEtJour(D1 As Double, D2 As Double) As Variant
Dim tmp#, tblo(1 To 2) As Variant
tmp = D1
Do While tmp < D2
If (tmp - Int(tmp)) >= TimeValue("09:00:00") And_
(tmp - Int(tmp)) < TimeValue("18:00:00") Then
'heures de jour
tblo(1) = (tblo(1) + TimeValue("00:01:00")) * 1
Else
'heures de nuit
tblo(2) = (tblo(2) + TimeValue("00:01:00")) * 1
End If
tmp = tmp + TimeValue("00:01:00")
Loop
NuitEtJour = Application.Transpose(tblo)
End Function
La boucle minute par minute risque d'être un peu longuette s'il y a plusieurs jours d'écart entre les dates et heures à examiner...
Les heures sont comptées de nuit de 18h à 8h59 et de jour de 9h à 17h59. Si ce n'est pas le cas modifie les conditions dans la fonction

Retour liens Excel