Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, h#
Set r = Intersect(Target, Range("A2:B" & Rows.Count), Me.UsedRange)
If r Is Nothing Then Exit Sub
For Each r In r 'si entrées multiples
Cells(r.Row, 3).Resize(, 2) = "" 'RAZ
If Cells(r.Row, 1) & Cells(r.Row, 2) <> "" Then
h = Heure(Cells(r.Row, 1)) + Heure(Cells(r.Row, 2))
Cells(r.Row, 3) = h
Cells(r.Row, 4) = Heure(h, True)
End If
Next
End Sub
Function Heure(v, Optional op As Boolean = False)
Dim sg, p
sg = IIf(Left(CStr(v), 1) = "-", -1, 1)
v = Abs(Val(Replace(CStr(v), ",", ".")))
If op Then
v = sg * (Int(v * 24) + (Round(v * 1440) - 60 * Int(v * 24)) / 100)
Else
v = Format(v, "0.00")
p = InStr(v, Mid(0.1, 2, 1)) 'position du séparateur décimal
v = sg * (Left(v, p - 1) / 24 + Mid(v, p + 1) / 1440)
End If
Heure = v
End Function