XL 2010 Temps de travail

  • Initiateur de la discussion Initiateur de la discussion Konte94
  • Date de début Date de début

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 !

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

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
 
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
 
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

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.
 
- 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
4
Affichages
253
Réponses
16
Affichages
1 K
Réponses
9
Affichages
1 K
  • Question Question
Réponses
12
Affichages
1 K
Réponses
1
Affichages
919
Réponses
2
Affichages
694
Retour