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