Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then Exit Sub
If Target.Column = 2 Then
If Target.Value Like "*h*" Then
Application.EnableEvents = False
Target.Value = TimeValue(Replace(Target.Value, "h", ":"))
Application.EnableEvents = True
ElseIf Target.Value > 1 Then ' S'il a été saisi une durée supérieure à 1 jour
Application.EnableEvents = False
Target.Value = Target.Value / 1440 ' on la corrige en minutes.
Application.EnableEvents = True: End If
Target.NumberFormat = "[h]\hmm": End If
End Sub