XL 2019 Calcul des heures selon une plage entre deux dates

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cybertoys63

XLDnaute Nouveau
Bonjour à la communauté ^^

Je suis en pleine réflexion depuis plusieurs semaine sur un fichier et là, je sèche ...

Voilà mon problème:

Jai une date de début et une date de fin (au format 10/05/2025 10:30 par exemple).
J'ai les plages horaires suivantes :
- du lundi 06h au dimanche 06h, avec pour particularité:
-- de 06h à 21h (jour),
-- de 21h à 06h (nuit)
- du dimanche 06h au lundi 06h (WE)

Je vous joint un fichier pour plus de clarté dans ma demande

Si quelqu'un peut m'aider je suis plus que preneur ^^
 

Pièces jointes

Bonjour cybertoys63, bienvenue sur XLD,

Les résultats que vous indiquiez en H8-I10-I11-I14-I15 étaient faux, c'est peut-être pour ça que vous n'avez pas de réponse.

Voyez le fichier .xlsm joint et cette fonction VBA qui renvoie une matrice :
VB:
Function Heures(deb#, fin#)
Dim min&, t#, dat&, t1#, t2#, a(1 To 2)
For min = 1440 * deb To 1440 * fin - 1 'minutes
    t = (min + 1 / 2) / 1440 'au milieu de l'intervalle
    dat = Int(t)
    t1 = dat + 6 / 24
    t2 = dat + 21 / 24
    If t > t1 And t < t2 And Weekday(dat) > 1 Then a(1) = a(1) + 1 'compte les minutes
    If t > dat And t < t1 Or t > t2 And t < dat + 1 And Weekday(dat) > 1 Then a(2) = a(2) + 1
Next
a(1) = a(1) / 1440 'conversion des minutes
a(2) = a(2) / 1440
Heures = a 'matrice (vecteur horizontal)
End Function
Sélectionnez la plage H5:I5, entrez la formule =Heures(B5;D5) dans la barre de formule et validez matriciellement par Ctrl+Maj+Entrée.

Puis tirez la plage H5:I5 vers le bas.

Formule en K5 =ARRONDI(F5-H5-I5;6)

A+
 

Pièces jointes

Bonjour,
@job75 , je ne dois pas comprendre la même chose que toi, notamment pour les lignes 10 et 11
D'après ce que je comprends, les heures entre dimanche minuit 06H00 et lundi 06H00 sont également comptabilisées en heures du dimanche...
Ce qui ferait (pour la ligne 10) :
- 02 H colonne H (du lundi 06H00 au lundi 08H00)
- 08 H colonne I (du samedi 22H00 au dimanche 06H00)
- 24 H colonne K (du dimanche 06H00 au lundi 06H00)
Mais peut-être me trompé-je???
(Et ces valeurs correspondent donc à son fichier initial)
Bonne journée
Edit, modifié minuit par 06H00
 
Dernière édition:
Bonjour Cousinhub et merci.

En effet je n'avais pas traité correctement le lundi, les résultats de cybertoys63 en I10-I11-I14-I15 sont justes.

Le fichier avec la fonction corrigée :
VB:
Function Heures(deb#, fin#)
Dim min&, t#, dat&, t1#, t2#, a(1 To 2)
For min = 1440 * deb To 1440 * fin - 1 'minutes
    t = (min + 1 / 2) / 1440 'au milieu de l'intervalle
    dat = Int(t)
    t1 = dat + 6 / 24
    t2 = dat + 21 / 24
    If t > t1 And t < t2 And Weekday(dat) > 1 Then a(1) = a(1) + 1 'compte les minutes
    If t > dat And t < t1 And Weekday(dat) <> 2 Or t > t2 And t < dat + 1 And Weekday(dat) > 1 Then a(2) = a(2) + 1
Next
a(1) = a(1) / 1440 'conversion des minutes
a(2) = a(2) / 1440
Heures = a 'matrice (vecteur horizontal)
End Function
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour