XL 2010 Temps de travail

Konte94

XLDnaute Junior
Salut tout le monde, je vous en prie qui peut m'aider à écrire un programme vba qui me permettra de calculer la durée payée du travail d'un employé avec une pause obligatoire d'une heure qui s'étend de 12h:00 à 13h:00.
L'exercice est sur le fichier joint ci-dessous
 

Pièces jointes

  • Calcul temps de travail enoncé.xls
    34 KB · Affichages: 54

zebanx

XLDnaute Accro
Bonjour Konte94, le forum

Un essai FORMULES avec une colonne supplémentaire pour obtenir le lunchtime calculé à chaque date.
Sinon, ça va être "galère" à manipuler dans une formule.

xl-ment
zebanx
 

Pièces jointes

  • temps travail.xlsm
    21.4 KB · Affichages: 19
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

À tester :

VB:
Sub Macro1()
Dim O As Worksheet
Dim TV As Variant
Dim I As Integer
Dim COL As Byte
Dim D As Double
Dim F As Double

Set O = Worksheets("Calcul de temps de travail")
TV = O.Range("C7").CurrentRegion
For I = 2 To UBound(TV, 1) - 1
    Select Case Weekday(CDate(TV(I, 1)))
        Case 7
            COL = 5
        Case 1
            COL = 6
        Case Else
            COL = 4
    End Select
    If TV(I, 2) > 12 / 24 And TV(I, 2) < 13 / 24 Then D = 13 / 24 Else D = TV(I, 2)
    If TV(I, 3) > 12 / 24 And TV(I, 3) < 13 / 24 Then F = 12 / 24 Else F = TV(I, 3)
    If TV(I, 2) < 12 / 24 And TV(I, 3) > 13 / 24 Then F = TV(I, 3) - 1 / 24
    If (TV(I, 2) > 12 / 24 And TV(I, 2) < 13 / 24) And (TV(I, 3) > 12 / 24 And TV(I, 3) < 13 / 24) Then F = 0: D = 0
    O.Cells(I + 6, COL + 2).Value = IIf(F = 0 And D = 0, "", Format(F - D, "hh:mm"))
Next I
End Sub
 

Konte94

XLDnaute Junior
Bonsoir le fil, bonsoir le forum,

À tester :

VB:
Sub Macro1()
Dim O As Worksheet
Dim TV As Variant
Dim I As Integer
Dim COL As Byte
Dim D As Double
Dim F As Double

Set O = Worksheets("Calcul de temps de travail")
TV = O.Range("C7").CurrentRegion
For I = 2 To UBound(TV, 1) - 1
    Select Case Weekday(CDate(TV(I, 1)))
        Case 7
            COL = 5
        Case 1
            COL = 6
        Case Else
            COL = 4
    End Select
    If TV(I, 2) > 12 / 24 And TV(I, 2) < 13 / 24 Then D = 13 / 24 Else D = TV(I, 2)
    If TV(I, 3) > 12 / 24 And TV(I, 3) < 13 / 24 Then F = 12 / 24 Else F = TV(I, 3)
    If TV(I, 2) < 12 / 24 And TV(I, 3) > 13 / 24 Then F = TV(I, 3) - 1 / 24
    If (TV(I, 2) > 12 / 24 And TV(I, 2) < 13 / 24) And (TV(I, 3) > 12 / 24 And TV(I, 3) < 13 / 24) Then F = 0: D = 0
    O.Cells(I + 6, COL + 2).Value = IIf(F = 0 And D = 0, "", Format(F - D, "hh:mm"))
Next I
End Sub
Merci mais j'ai pas bien compris la formule.
Pouvez vous m'expliquer un peu svp
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Cela signifie que dans le fichier où tu as copier le code, l'onglet ne se nomme pas :
Calcul de temps de travail. Soit tu renommes l'onglet, sois tu modifies le code mais il faut que ça soit identique...
En pièce jointe le fichier de ton premier post avec le code. Ça semble fonctionner...
 

Pièces jointes

  • Copie de Calcul temps de travail enoncé.xls
    45 KB · Affichages: 9

Konte94

XLDnaute Junior
Re,

Cela signifie que dans le fichier où tu as copier le code, l'onglet ne se nomme pas :
Calcul de temps de travail. Soit tu renommes l'onglet, sois tu modifies le code mais il faut que ça soit identique...
En pièce jointe le fichier de ton premier post avec le code. Ça semble fonctionner...
Merci Robert je commence à comprendre. Mais j'ai remarqué dans dans mes calcules y'a une erreur au niveau du TOTAL HEURES NORMALES.je suis trop embêtant mais svp aidez mw.
 

Statistiques des forums

Discussions
312 234
Messages
2 086 475
Membres
103 226
dernier inscrit
smail12