Comptabiliser des types heures dans un encadrement d'horodate

pascal82

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Ma problématique: En fonction d'un horodate de début et de fin, je dois comptabiliser le nombre d'heures A,B et C selon le jour de la semaine, et le tout défini par une règle (jointe dans le fichier)
La règle impose 3 calculs différents du type d'heures (A,B ou C) selon :
- Si le jour est un lundi
- Si le jour est un mardi au jeudi
- Si le jour est un vendredi
- Si le jour est férié, un samedi ou dimanche
Dans le fichier selon la journée, j'ai coloré les cases selon la tranche horaire qu'il faut comptabiliser. J'ai également joints 3 exemples ou le calcul est volontairement décomposé pour expliquer la méthode utilisée. Manuellement le calcul est fastidieux avec un risque d'erreur important.

Merci par avance aux contributeurs

Cordialement
 

Pièces jointes

  • Test selon regle.xls
    38.5 KB · Affichages: 36

pascal82

XLDnaute Occasionnel
Re : Comptabiliser des types heures dans un encadrement d'horodate

Bonsoir,

J'ai avancé très légèrement, en effet je viens de terminer un petit programme pour comptabiliser les "B" et "C" pour le samedi dimanche avec la date début en AK3 (01/02/2014 17:00:00) et date de fin en AL3 (06/02/2014 12:00:00).
Ce programme ne fonctionne pas par le fait qu'excel calcul samedi 23h00 + 01h00 = dimanche 00h00 et non samedi 24h00.
Ce programme compte 13B et 17C alors qu'il devrait y avoir 14B et 17C. Je n'arrive pas a résoudre ce problème, qu'elle galère !!!!. Ou c'est la méthode choisie qui n'est pas la bonne.

Cordialement

VB:
Option Explicit
Dim DateInter As String
Dim Valferie As Integer

Sub ValideFerie() 'recherche si date est jour férié
Dim c As Variant
Valferie = 0
 For Each c In [AI4:AI16]
     If c Like DateInter Then
       c.Select
       Valferie = 1
       Exit Sub
     End If
   Next
   Valferie = 0
 End Sub

Sub calculheure()

Dim d1 As Date
Dim DateDeb As String
Dim DateFin As String
Dim Inter1 As String, Inter2 As String, Inter3 As String, Inter4 As String, Inter5 As String
Dim compteA%, compteB%, compteC%

 DateDeb = Format(Cells(3, 37), "dd/mm/yyyy hh:mm")
 DateFin = Format(Cells(3, 38), "dd/mm/yyyy hh:mm")
 DateInter = DateDeb


While DateInter < DateFin
    d1 = DateAdd("h", 1, DateInter)
    Debug.Print ">>>" & d1 & " : " & Format(d1, "dd/mm/yyyy hh:mm")
    DateInter = d1
    
'joursemaine: dimanche=1, lundi=2, mardi=3, mercredi=4, jeudi=5, vendredi=6, samedi=7

'ValideFerie'verification si jour ferié

    'pour Samedi, dimanche et férié
        If Weekday(DateInter) = 1 Or Weekday(DateInter) = 7 Or Valferie = 1 Then
        Inter1 = Format(DateInter, "dd/mm/yyyy 07:00:00")
        Inter2 = Format(DateInter, "dd/mm/yyyy 20:00:00")
            If DateInter >= Inter1 And DateInter <= Inter2 Then
            compteC = compteC + 1
            Else
            compteB = compteB + 1
            End If
        End If
Wend

Range("ak5").Value = compteA
Range("ak6").Value = compteB
Range("ak7").Value = compteC

End Sub
 

pascal82

XLDnaute Occasionnel
Re : Comptabiliser des types heures dans un encadrement d'horodate

Bonsoir,

J'ai suivi votre conseil Victor21 et enlevé 1 minute a la date de début (01/02/2014 16:59:00) mais le résultat n'est toujours pas satisfaisant.
Il parait que la nuit porte conseil alors je vais me coucher (après samedi 24h00 et avant dimanche 00:00 !!!!).

Cordialement
 

pascal82

XLDnaute Occasionnel
Re : Comptabiliser des types heures dans un encadrement d'horodate

Bonsoir à tous,

@Victor21: Dans un premier temps j'avais suivi votre conseil et les résultats n'étaient pas satisfaisants, c'est pourquoi j'ai enlevé des secondes par-ci par-là pour arriver enfin à de bon résultats.

Il faut reconnaître que le code est loin d'être parfait, de plus un petit bug me tracasse les neurones, et je n'arrive pas a le résoudre. Lorsque je sélectionne une date début à 00h00, alors le code ne calcul plus rien, grrr... Je suppose que cela est du a la structure ou aux instructions du code ? Bref si une âme charitable pouvait soit le simplifier soit me le débugger alors cela serait formiformiformidable

Je m'arrache les cheveux qu'il me reste.

Cordialement

Nota: Il faut renseigner horodate début en AM3 et horodate de fin en AN3. Le tableau résultat est AK5:AL7.
 

Pièces jointes

  • Test regle.xlsm
    26.9 KB · Affichages: 25

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 458
dernier inscrit
Vulgaris workshop