Bonjour,
Je pense qu'une MFC serait plus simple à mettre en oeuvre...
Sinon, voilà ma proposition en VBA (à coller dans le module de la feuille en question, et non dans un module standard) :
Private Sub Worksheet_Change(ByVal Target As Range)
'11h de repos mini
If Not Application.Intersect(Target, Range("C5:C35")) Is Nothing Then
If Not IsEmpty(Target) And Not IsEmpty(Target.Offset(-1, 1)) Then
If Target.Offset(-1, 1) = 0 And Target < 11 / 24 Then MsgBox Range("A" & Target.Row) & " : Repos minimal (11h) non respecté !"
If Target.Offset(-1, 1) > 0 And Target + 1 - Target.Offset(-1, 1) < 11 / 24 Then MsgBox Range("A" & Target.Row) & " : Repos minimal (11h) non respecté !"
End If
End If
'Durée travail maxi
If Not Application.Intersect(Target, Range("D5:D35")) Is Nothing Then
If Not IsEmpty(Target) And Not IsEmpty(Target.Offset(0, -1)) Then
If Target = 0 And 1 - Target.Offset(0, -1) > 12 / 24 Then MsgBox Range("A" & Target.Row) & " : Durée de travail maximale (12h) dépassée !"
If Target > 0 And Target - Target.Offset(0, -1) > 12 / 24 Then MsgBox Range("A" & Target.Row) & " : Durée de travail maximale (12h) dépassée !"
End If
End If
End Sub