Private Sub worksheet_change(ByVal Target As Range)
If Not Intersect(Target, [A2:A300]) Is Nothing Then
If IsNumeric(Target) Or Target = "NR" Then Exit Sub
If InStr(1, UCase(Target), "AM") <> 0 Then Target _
= Replace(Replace(UCase(Target), "AM", ""), " ", "")
If InStr(1, UCase(Target), "PM") <> 0 Then Target _
= Replace(Replace(UCase(Target), "PM", ""), " ", ""): Target = Target + 0.5
If Not IsNumeric(Target) And Target <> "NR" Then
MsgBox "Please enter a number or NR."
Target.ClearContents
Target.Select
End If
End If
End Sub
MsgBox " Please ensure to insert time in the following format 21h, if not running or no sample, enter NR."
If cible = "NR" then exit sub
dim h as date, s as string, ok as boolean
ok = false
while ok = false
s = inputbox "Donnez l'heure : "
on error goto erreur
h = cdate(s)
on error goto 0
ok = true
goto suite
erreur:
msgbox "l'heure saisie n'est pas au format horraire ! "
wend
if time > cdate("11:59") then
if h < cdatte("12:00") then
if msgbox("Confirmation de l'heure : " & vbcrlf & "Yes : " & Format(h,"hh:mm") & vbcrlf & "No : " & Format(h + cdate("12:00"),"hh:mm"),vbyesno) = vbno then h = h + cdate("12:00")
end if
end if
A moins que l'utilisateur soit vraiment embouché et mette des négatifs, tu peux utiliser Target < 1 pour vérifier que ce n'est pas supérieur à 24h (-0.5 à +0.5 fait une rotation de 24 h, c'est -0.25 et +0.25 qui seraient des bornes abmissibles à + ou - 6het malheureusement JNP ta proposition ne me sauve pas (pour le moment)
il est clair que l'on ne peut pas empecher l'utilisateur de rentrer 10:00 ou 22:00.
Toutefois peut on envisager d'inclure une condition tel que l'heure rentree ne depasse pas +/- 12h l'heure de saisie ( now()+0.5 or now() -0.5 ).
Ben ton exemple avait une colonne en A, d'où mon code, mais avec Union, ça marcheraPS: JNP tu as bien vu que j'ai deja un private sub sur une autre colonne, je mixerai tout ca plus tard pas besoin de t'empeter. merci.
Private Sub worksheet_change(ByVal Target As Range)
If Target.Column <> 2 Then GoTo second
If IsNumeric(Target) Or Target = "NR" Then Exit Sub
If InStr(1, UCase(Target), "AM") <> 0 Then Target _
= Replace(Replace(UCase(Target), "AM", ""), " ", "")
If InStr(1, UCase(Target), "PM") <> 0 Then Target _
= Replace(Replace(UCase(Target), "PM", ""), " ", ""): Target = Target + 0.5
If InStr(1, UCase(Target), ";") <> 0 Then Target _
= Replace(UCase(Target), ";", ":")
If Not IsNumeric(Target) And Target <> "NR" Then
MsgBox "Please enter the time or NR."
Target.ClearContents
Target.Select
second:
If Target.Column <> 48 Then Exit Sub
If IsNumeric(Target) Or Target = "NR" Then Exit Sub
If Not IsNumeric(Target) And Target <> "NR" Then
MsgBox "Please enter a number or NR."
Target.ClearContents
Target.Select
End If
End If
End Sub
Private Sub worksheet_change(ByVal Target As Range)
If IsNumeric(Target) Or Target = "NR" Then Exit Sub
If Target.Column = 2 Then
If InStr(1, UCase(Target), "AM") <> 0 Then Target _
= Replace(Replace(UCase(Target), "AM", ""), " ", "")
If InStr(1, UCase(Target), "PM") <> 0 Then Target _
= Replace(Replace(UCase(Target), "PM", ""), " ", ""): Target = Target + 0.5
If InStr(1, Target, ";") <> 0 Then Target _
= Replace(Target, ";", ":")
If Not IsNumeric(Target) And Target <> "NR" Then
MsgBox "Please enter the time or NR."
Target.ClearContents
Target.Select
End If
ElseIf Target.Column = 48 Then
If Not IsNumeric(Target) And Target <> "NR" Then
MsgBox "Please enter a number or NR."
Target.ClearContents
Target.Select
End If
End If
End Sub