Différence date suivant plage horaire

Bonjour à tous,

Je cherche de l'aide à travers ce forum ^^

Bon j'expose mon probleme:

y a deja un sujet "quasi similaire" mais j'arrive pas a l'adapter a mon besoin

ci dessous le sujet deja traiter et resolu:

https://forum.excel-pratique.com/viewtopic.php?t=4204&highlight=supression+horaire

donc j'expose mon pb:

Je cherche une formule qui pourrait me calculer la durée qu'il y a entre deux dates/heures en prenant en compte une plage horaire.

A1=27/12/2007 14:56:48

A2=04/01/2008 14:47:14

Plage horaire : 6h00-23h00

exemple1:

A1= 23/12/2007 14:30:00

A2= 26/12/2007 15:00:00

la durée est de :

sur 23/12/2007 ===> 23:00:00 - 14:30:00 = 08:30:00

sur 24/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 25/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 26/12/2007 ===> 15:00:00 - 06:00:00 = 11:00:00

===> total de durée = 53:30:00

De plus A1 et A2 peuvent etre dans la plage horaire (23h à 6h)

exemple2:

A1= 23/12/2007 05:30:00 (donc ds le calcule on prendra a 06:00:00)

A2= 26/12/2007 15:00:00

la durée est de :

sur 23/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 24/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 25/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 26/12/2007 ===> 15:00:00 - 06:00:00 = 11:00:00

===> total de durée = 62:00:00

exemple3:

A1= 23/12/2007 14:30:00

A2= 26/12/2007 03:00:00

la durée est de :

sur 23/12/2007 ===> 23:00:00 - 14:30:00 = 08:30:00

sur 24/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 25/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 26/12/2007 ===> 03:00:00 inferieur a 06:00:00 = 00:00:00

===> total de durée = 42:30:00

exemple4:

A1= 23/12/2007 05:30:00

A2= 26/12/2007 03:00:00

la durée est de :

sur 23/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 24/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 25/12/2007 ===> 23:00:00 - 06:00:00 = 17:00:00

sur 26/12/2007 ===> 03:00:00 inferieur a 06:00:00 = 00:00:00

===> total de durée = 51:00:00

Voila j'ai pas mal détaillé avec des exemples en esperant avoir été clair

Ce qui diffère par rapport au sujet deja resolu:

je ne tiens pas compte des NB.JOURS.OUVRES

A1 et A2 peuvent etre en dehors de la plage horaire

Merci, d'avance à tous

Bonjour

Le raisonnement n'est pas facile, même sans formules, tu es arrivé à te tromper.

https://www.excel-pratique.com/~files/doc/TdNRvHeures.xls

Cordialement

Bonsoir à tous,

un petit up sur ce "vieux" sujet!

J'ai exactement le même problème que Raymonuzika et la solution d'Amadeus ne me donne pas la solution escomptée à une des dimensions du problème, à savoir que les date A1 et B1 peuvent être comprises dans la plage horaire de fermeture.

Si je reprends la plage théorique d'ouverture entre 6h et 23h, avec:

une date début

07/06/2013 23:16

et une date fin

08/06/2013 07:00

Je voudrais trouver "01:00:00", et pas "00:43:00"

Autre problème, si je teste avec une plage d'ouverture entre 6h et minuit, je trouve des valeurs négatives.

Mes exemples en pièce-jointe.

Merci!

Bonjour,

Ci-joint fonction personnalisée à tester, voire adapter.

Ma petite contribution de la journée.

Option Explicit
Public Function Nb_Heures(D1 As Date, D2 As Date)
Const Ho As Date = #6:00:00 AM#
Const Hf As Date = #11:00:00 PM#
Dim tmp1 As Date, tmp2 As Date
Dim i As Integer

    If Int(D2) <= Int(D1) Or Int(D1) = Int(D2) Then Exit Function
    'MOD(n, d) = n - d*INT(n/d)
    tmp1 = D1 - 1 * Int(D1 / 1) 'heure début
    tmp2 = D2 - 1 * Int(D2 / 1) 'heure fin
    'début
    i = Int(D2) - Int(D1) - 1   'nombre de jours entre les 2 dates
    'nombre d'heures date début
    Select Case tmp1
        Case Is < Ho
            tmp1 = Hf - Ho
        Case Is > Hf
            tmp1 = 0
        Case Else
            tmp1 = Hf - tmp1
    End Select
    'nombre d'heures date fin
    Select Case tmp2
        Case Is < Ho
            tmp2 = 0
        Case Is > Hf
            tmp2 = 0
        Case Else
            tmp2 = tmp2 - Ho
    End Select
    'résultat
    Nb_Heures = i * (Hf - Ho) + tmp1 + tmp2

End Function
25tdnrvheures-v1.zip (15.51 Ko)

Salut Jean-Eric et merci beaucoup!

Ton code répond bien au problème décrit dans mon message, mais ça ne fonctionne pas quand je teste ce type de cas:

07/06/2013 16:16 07/06/2013 18:16

Le résultat affiché est 00:00

Je ne comprends pas ce qui cloche, parce que même si je ne connais pas grand chose au VBA, j'ai compris la logique de ton calcul et quand je l'ai reproduit étape par étape sur le tableur, cela m'a donné la bonne réponse (2h).

Merci encore

Bonjour,

Modifies

If Int(D2) <= Int(D1) Or Int(D1) = Int(D2) Then Exit Function

par

If D2 <= D1 Or D1 = D2 Then Exit Function

A te relire.

Bonjour,

ça marche....mais maintenant quand je teste

07/06/2013 17:08 07/06/2013 23:17

08/06/2013 23:08 08/06/2013 23:17

j'ai des valeurs négatives...

Merci

Bonjour,

Ligne surlignée à modifier

Select Case tmp2
        Case Is < Ho
            tmp2 = 0
        Case Is > Hf
          tmp2 = Hf - Ho
        Case Else
            tmp2 = tmp2 - Ho
    End Select
Rechercher des sujets similaires à "difference date suivant plage horaire"