Travail sur dates et heures

bonjour,

j'ai une demande urgente de ma direction et je n'arrive pas à traiter le fichier.

ceci est pour un bilan de sortie de voiture. une ligne correspond à une voiture.

dans l'onglet export j'ai à chaque ligne une date de sortie et de retour ainsi qu'une heure de sortie et de retour.

chaque heure entamée compte pour une heure.

dans l'onglet fin j'ai en horizontal les plages de une heure et en verticale les dates.

ce que je veux faire c'est mettre dans le tableau "fin" le nombre de voitures sorties à chaque date et par tranche d'une heure.

le but est de quantifier le besoin par heure afin d'organiser des plages horaires pour la perception des véhicules.

donc exemple une voiture sort à 9h15 et rentre à 11h30 le 01 septembre on aura dans les colonnes J-K-L-M de l'onglet "fin" et de la ligne 2 un véhicule sorti.

alors il y a des voitures qui sortent et rentrent le même jour et certaines qui sortent et rentrent plusieurs jours après.

Merci pour votre aide car là je suis dans la mouise et mon chef veut ça pour mardi snifffffffff.

Hello,

Tu trouveras ma proposition en PJ.

Onglet "export" :
- Colonnes E,F,G,H,I : c'est grosso modo les calculs effectués dans la macro. La colonne I te permet d'avoir par voiture le nombre d'heure "sorti" avec le détail des calculs appliqués
- Le petit tableau en colonne K, L, M c'est le contrôle de cohérence avec le résultat que tu souhaites dans l'onglet "fin" qui montrent que toutes les données ont bien été traitées et que c'est cohérent
- Je te conseille de garder les calculs et la vérif pour les futurs données

Onglet "fin" :

- Tu trouveras un bouton qui exécute la macro pour remplir ton tableau, j'ai vidé le tableau pour te laisser le plaisir de le voir se remplir par toi même =D

(PS ça prend une dizaine ou quinzaine de seconde à s'exécuter donc patience et au fait c'est entre 8h et 16h qu'il y a la plus forte demande des véhicules )

N'hésite pas à me faire ton retour :)

Bonjour,

Peux-tu préciser ta version Excel ?

Suivant ta réponse, il y aura plusieurs solutions possibles.

Cdlt.

Salut Danval,
Salut l'équipe,

si j'ai bien compris le truc...
Ouvrir la feuille 'Fin' démarre la macro...

Private Sub Worksheet_Activate()
'
Dim tData, tExtract, dDate As Date, iDif1%, iDif2%, iHr1%, iHr2%, iEnd%
'
Application.ScreenUpdating = False
'
With Worksheets("Export")
    tData = .Range("A4").Resize(.Range("A" & Rows.Count).End(xlUp).Row - 3, 4).Value
    Range("A2:Y" & Range("A" & Rows.Count).End(xlUp).Row + 1).Delete shift:=xlUp
    tExtract = Range("A2:Y" & 2 + DateDiff("d", CDate(.[A4]), CDate(.Range("A" & Rows.Count).End(xlUp).Value))).Value
End With
'
dDate = CDate(tData(1, 1)) - 1
For x = 1 To UBound(tData, 1)
    iDif1 = DateDiff("d", dDate, CDate(tData(x, 1)))
    iDif2 = DateDiff("d", dDate, CDate(tData(x, 3)))
    iEnd = IIf(iDif2 > iEnd, iDif2, iEnd)
    iHr1 = CInt(Split(tData(x, 2), "h")(0)) + 1
    iHr2 = CInt(Split(tData(x, 4), "h")(0)) + IIf(CInt(Split(tData(x, 4), "h")(1)) > 0, 1, 0)
    For y = iDif1 To iDif2
        tExtract(y, 1) = DateAdd("d", y, dDate)
        For Z = IIf(y = iDif1, 1 + iHr1, 2) To IIf(y = iDif2 Or iDif1 = iDif2, 1 + iHr2, 25)
            tExtract(y, Z) = CInt(tExtract(y, Z)) + 1
        Next
    Next
Next
Range("A2").Resize(iEnd, 25).Value = tExtract
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row Step 2
    Range("A" & x & ":Y" & x).Interior.Color = RGB(215, 215, 215)
Next
Range("A2:Y" & Range("A" & Rows.Count).End(xlUp).Row).BorderAround LineStyle:=xlContinuous
'
Application.ScreenUpdating = True
'
End Sub
10danval-export.xlsm (63.48 Ko)


A+

Hey Curulis57,

Je comprends pas tout à ta méthode mais on a le même résultat ;)

Bonjour à tous,

Comme à chaque fois que j'ai demandé de l'aide et bien réponse efficace.

Merci pour votre aide précieuse.

Bon WE

Hey :)

Pourras tu passer le sujet en résolu ? :)

Rechercher des sujets similaires à "travail dates heures"