Calcul très complexe d'heures !

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 !

antho2bordo

XLDnaute Nouveau
Bonjour à tous.
Bon après avoir passé la nuit sur pour créer un joli tableau afin de m'avancer dans mon travail depuis chez moi, j'ai re créer une sorte de planning qui me permettra si j'arrive à mes fins à m'avancer dans mon travail afin de créer les heures de boulot de 60 à 70 personnes, mais là j'arrive à un problème !

Après plusieurs recherches sur le forum et sur le forum hardaware et chez notre ami commun, google, je me tourne vers vous afin de trouver une réponse à mon problème.



Voilà je suis entrain de faire un tableau d'employés avec les jours travaillés et les jours de repos, et les heures de travail bref, je vous passe le lien de la capture décran, afin que vous puissiez visualiser mon problème !

http://www.hiboox.fr/go/images/divers/calcul-excel,cf67aee88b514bcbec228b4ab7908627.png.html

Voilà,

Je souhaite que lorsque je tape par exemple : 09h00 - 14h00 et bien que, le total d'heures qui est donc de 5 heures s'affiche au niveau de la case signalé par la flèche rouge.

Je souhaite également étendre cette formule aux autres heures signalées par les fleches noir et que tout ce joli total se retrouve donc, dans la case à droite au niveau de la fleche rouge... et biensur étendre cette formule sur toutes les autres lignes de chaques employés.


COMMENT faire ?
Bon mercredi à tous !
 
Dernière édition:
Re : Calcul très complexe d'heures !

Bonjour à tous,

J'ose tenter de suppléer l'ami Roger : Pfiou....

Code:
Function TotHorM(r As Range)
   Application.Volatile
Dim a!, b!
Dim oCel As Range, x, i&, y, z, t!
   a = CSng(CDate("08:00"))
   b = CSng(CDate("12:00"))
   For Each oCel In r.Cells
      If oCel.Value <> "OFF" And Not IsEmpty(oCel) Then
         x = Split(Replace(Replace(Replace(Replace(Replace(oCel.Value, "H", ":", , , vbTextCompare), " - ", "#"), " -", "#"), "- ", "#"), "-", "#"))
         For i = 0 To UBound(x)
            y = Split(Trim(x(i)), "#")
            If y(0) = "24:00" Then y(0) = "00:00"
            If y(1) = "24:00" Then y(1) = "00:00"
            If CSng(CDate(y(1))) < CSng(CDate(y(0))) Then
               t = t + WorksheetFunction.Max(CSng(CDate(y(1))) - a, 0) + WorksheetFunction.Max(b - CSng(CDate(y(0))), 0)
            Else
               t = t + WorksheetFunction.Max(WorksheetFunction.Min(CSng(CDate(y(1))), b) - WorksheetFunction.Max(CSng(CDate(y(0))), a), 0)
            End If
         Next i
      End If
   Next oCel
   TotHorM = t
End Function
Function TotHorS(r As Range)
   Application.Volatile
Dim a!, b!
Dim oCel As Range, x, i&, y, z, t!
   a = CSng(CDate("12:30"))
   b = CSng(CDate("16:00"))
   For Each oCel In r.Cells
      If oCel.Value <> "OFF" And Not IsEmpty(oCel) Then
         x = Split(Replace(Replace(Replace(Replace(Replace(oCel.Value, "H", ":", , , vbTextCompare), " - ", "#"), " -", "#"), "- ", "#"), "-", "#"))
         For i = 0 To UBound(x)
            y = Split(Trim(x(i)), "#")
            If y(0) = "24:00" Then y(0) = "00:00"
            If y(1) = "24:00" Then y(1) = "00:00"
            If CSng(CDate(y(1))) < CSng(CDate(y(0))) Then
               t = t + WorksheetFunction.Max(CSng(CDate(y(1))) - a, 0) + WorksheetFunction.Max(b - CSng(CDate(y(0))), 0)
            Else
               t = t + WorksheetFunction.Max(WorksheetFunction.Min(CSng(CDate(y(1))), b) - WorksheetFunction.Max(CSng(CDate(y(0))), a), 0)
            End If
         Next i
      End If
   Next oCel
   TotHorS = t
End Function

TotHorS : pour les heures du Soir 12:30 -16:00
TotHorM : pour les heures du Matin 08:00 -12:00

Il te manque 12:00-12:30

A+ à tous
 

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

Réponses
3
Affichages
2 K
Retour