Calcul nombre d'heures par mois dans intervalle date

Y compris Writer et toute autre question en lien avec les suites bureautiques Open Source
T
Taoufiq
Jeune membre
Jeune membre
Messages : 38
Inscrit le : 20 février 2019
Version d'Excel : 2010

Message par Taoufiq » 2 mai 2019, 09:32

Bonjour,

En voilà un cas !

Un dossier est ouvert à une date x sous le format JJ/MM/AAAA HH:MM et clôturé plus tard JJ+n/MM+n/AAAA+n HH:MM,

Nous avons besoin de calculer le nombre d'heures allouées au traitement du du dossier par mois,

Cas de figure :

Pour un dossier 001 ouvert le 02/01/2019 15:33 clos le 14/04/2019 17:46, à savoir :

- Planning quotidien : 07:30 - 11:30 // 13:00 - 17:00
- Hors weekend et jours fériés

Q1 : Nous avons besoin de savoir le nombre d'heures allouées à ce traitement pour chaque mois.
Q2 : Quelle disposition pourrions nous avoir pour présenter les données,

Merci
Avatar du membre
Pedro22
Membre impliqué
Membre impliqué
Messages : 2'315
Appréciations reçues : 238
Inscrit le : 26 janvier 2017
Version d'Excel : 2010

Message par Pedro22 » 2 mai 2019, 10:01

Bonjour,

Concernant l'organisation des données, la bonne solution me semble être une base de données classique, avec 1 ligne = 1 dossier. Quelque chose du genre :
N°dossierNomdate_heure_debutdate_heure_fin...
Bien que ton sujet soit dans la section "calc", ton profile indiques que tu disposes d'Excel. Sous Excel, tu as une fonction appelée NB.JOURS.OUVRES() qui permet de calculer un nombre (entier) de jours ouvrés entre 2 dates, avec possibilité d'inclure une liste de jours fériés (3ème argument, facultatif). Cette formule peut t'aider, sinon je pense que c'est faisable avec une fonction personnalisée VBA (pour éviter une formule complexe et à rallonge).

Je revient avec une proposition...
Le problème n'est pas de ne pas savoir, le problème est de ne pas chercher...
Ton problème est résolu ? N'oublie pas de l'indiquer :
T
Taoufiq
Jeune membre
Jeune membre
Messages : 38
Inscrit le : 20 février 2019
Version d'Excel : 2010

Message par Taoufiq » 2 mai 2019, 10:10

Bonjour Pedro,

Nous sommes en phase, en effet c'est un sujet de calcul sous excel,

En ce qui concerne la disposition nous pouvons aussi lisser les mois de l'année en colonnes comme ça nous avons le nombre d'heures par mois...

La création de formules personnalisées n'est pas mon fort :oops:

Merci,
Avatar du membre
Pedro22
Membre impliqué
Membre impliqué
Messages : 2'315
Appréciations reçues : 238
Inscrit le : 26 janvier 2017
Version d'Excel : 2010

Message par Pedro22 » 2 mai 2019, 12:18

J'ai planché sur une formule (qui est assez compliquée !!) :
Taoufiq.xlsx
(16.33 Kio) Téléchargé 5 fois
Pour qu'elle fonctionne :
- Les heures de début ou fin doivent être comprises dans une plage de travail (sinon les heures de cette journée sont omises)
- Les horaires de travail sont à indiquer dans le fichier sous forme numérique (7,5 pour 7h30 par exemple), mais peuvent aussi être inscrites "en dur" dans la formule
- Attention à tenir à jour la plage des jours fériés

J'ai aussi travaillé sur une macro qui fait le même travail pour avoir une formule beaucoup plus simple, mais elle ne donne pas toujours le résultat souhaité et je n'ai pas encore compris pourquoi. Elle n’apparaît donc pas dans ce premier fichier.
Le problème n'est pas de ne pas savoir, le problème est de ne pas chercher...
Ton problème est résolu ? N'oublie pas de l'indiquer :
T
Taoufiq
Jeune membre
Jeune membre
Messages : 38
Inscrit le : 20 février 2019
Version d'Excel : 2010

Message par Taoufiq » 2 mai 2019, 12:29

Merci pour ton investissement sur le sujet,

Je suis déjà parvenu à ce niveau de calcul avec une autre méthode :)

Le hic c'est le découpage de ces heures entre les mois,

Prenons l'exemple du dossier n° 2, combien de temps de traitement passé sur chaque mois à savoir Avril et Mai puis extrapolons sur une durée plus longue (ex. début en Janvier et fin en Mai)
Avatar du membre
Pedro22
Membre impliqué
Membre impliqué
Messages : 2'315
Appréciations reçues : 238
Inscrit le : 26 janvier 2017
Version d'Excel : 2010

Message par Pedro22 » 2 mai 2019, 12:33

Taoufiq a écrit :
2 mai 2019, 12:29
Merci pour ton investissement sur le sujet,

Je suis déjà parvenu à ce niveau de calcul avec une autre méthode :)

Le hic c'est le découpage de ces heures entre les mois,

Prenons l'exemple du dossier n° 2, combien de temps de traitement passé sur chaque mois à savoir Avril et Mai puis extrapolons sur une durée plus longue (ex. début en Janvier et fin en Mai)
Si tu veux un décompte approximatif, tu peux diviser le résultat par la durée en mois du projet.
Si tu veux un décompte exact, il faudrait procéder autrement.

La solution la plus simple qui me vient est de garder la même structure, mais de découper un dossier en 1 ligne par mois à l'aide d'une macro. Le résultat pourrait être transféré sur un nouvel onglet pour ne pas écraser la structure initiale.
Un TCD te permet ensuite de visualiser tes données (par dossier, par mois... selon ce que tu souhaites).
1 membre du forum aime ce message.
Le problème n'est pas de ne pas savoir, le problème est de ne pas chercher...
Ton problème est résolu ? N'oublie pas de l'indiquer :
T
Taoufiq
Jeune membre
Jeune membre
Messages : 38
Inscrit le : 20 février 2019
Version d'Excel : 2010

Message par Taoufiq » 2 mai 2019, 14:39

Le décompte approximatif n'est pas la meilleure solution (nous cherchons des résultats précis)
L'idée de créer une table de retraitement me parait logique est intéressante reste à monter la macro adéquate (j'ai cherché mais en vain)
Avatar du membre
Pedro22
Membre impliqué
Membre impliqué
Messages : 2'315
Appréciations reçues : 238
Inscrit le : 26 janvier 2017
Version d'Excel : 2010

Message par Pedro22 » 2 mai 2019, 15:48

A tester :
Sub DiviserLignes()

Dim LigMax As Long, i As Long, m As Integer, j As Integer, D2 As Date

With Sheets("Feuil2")
    .Cells.ClearContents 'Suppression anciennes données
    Sheets("Feuil1").Range("Tableau1[#All]").Copy .Range("A1") 'Copie du tableau en feuille 2
    LigMax = .Range("A" & Rows.Count).End(xlUp).Row 'Détermine la dernière ligne
    For i = LigMax To 2 Step -1 'Boucle sur les lignes, en partant de la dernière
        m = Month(.Range("E" & i)) - Month(.Range("D" & i)) 'Calcul du nombre de mois du dossier
        If m > 0 Then 'Si plus d'un mois
            For j = 1 To m 'Boucle sur les mois
                .Range("A2").ListObject.ListRows.Add 'Ajout d'une ligne
                LigMax = LigMax + 1
                D2 = DateAdd("m", j, .Range("D" & i)) 'Calcul de la date du mois suivant
                .Range("A" & LigMax) = .Range("A" & i) 'Report du numéro de dossier
                .Range("D" & LigMax) = DateSerial(Year(D2), Month(D2), 1) + Sheets("Feuil1").Range("H2") / 24 'Ajout de la date de début de mois suivant
                If j = m Then .Range("E" & LigMax) = .Range("E" & i) Else .Range("E" & LigMax) = Int(DateAdd("m", 1, .Range("D" & LigMax))) + Sheets("Feuil1").Range("K2") / 24 - 1 'Ajout de la date de fin
            Next j
            D2 = DateAdd("m", 1, .Range("D" & i))
            .Range("E" & i) = DateSerial(Year(D2), Month(D2), 1) + Sheets("Feuil1").Range("K2") / 24 - 1 'Correction de la date de fin de la ligne d'origine
        End If
    Next i
End With

End Sub
Taoufiq2.xlsm
(35.85 Kio) Téléchargé 2 fois
Le problème n'est pas de ne pas savoir, le problème est de ne pas chercher...
Ton problème est résolu ? N'oublie pas de l'indiquer :
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'226
Appréciations reçues : 344
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 2 mai 2019, 16:11

Bonjour,

Pour ne parler que de l'allocation des heures par mois ... sans tenir compte des horaires de travail ...

un fichier test joint ...
Test Allocation Heures.xlsx
(19.44 Kio) Téléchargé 5 fois
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
T
Taoufiq
Jeune membre
Jeune membre
Messages : 38
Inscrit le : 20 février 2019
Version d'Excel : 2010

Message par Taoufiq » 2 mai 2019, 17:39

Merci pour votre aide les gars,

J'ai les neurones qui chauffent, je continue les vérifications demain et vous reviens,

PS : @James007 c'est la disposition que j'ai imaginé avant de poster ma question (TOP) mais à première vue la somme des mois ne correspond pas à la valeur des cellules de la colonne F

@Pedro : sauf erreur la macro fonctionne mais il me semble avoir remarqué des écarts au niveau de la formule,

Anyway i'll check & tell you tomorrow :wink:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message