Heure de début et fin dans textbox

Bonjour à tous,

J'ai dans un userform 2 textbox pour des heures de début et fin.

Je voudrais contrôler la saisie de l'heure de fin, pour qu'elle soit tjs > à l'heure de début

Le code actuellement dans ces 2 textbox permet à l'utilsateur d'être en numérique et format heure

ci-joint:

'Heure de début

Private Sub TextBox4_Change()

Dim H

H = TextBox4.Value

Select Case Len(H)

Case 1

If Not IsNumeric(H) Then H = ""

Case 2

If H Like "#:" Then

H = 0 & H

ElseIf Not IsNumeric(H) Then

H = ""

ElseIf CInt(H) > 23 Then

H = ""

Else

H = H & ":"

End If

Case 3

Case 4

If Not IsNumeric(Right(H, 1)) Then H = Left(H, 3)

Case 5

If Not IsNumeric(Right(H, 2)) Then

H = Left(H, 3)

ElseIf CInt(Right(H, 2)) > 59 Then

H = Left(H, 3)

End If

Case Else

H = ""

End Select

TextBox4.Value = H

End Sub

'Heure de fin

Private Sub TextBox5_Change()

Dim H

H = TextBox5.Value

Select Case Len(H)

Case 1

If Not IsNumeric(H) Then H = ""

Case 2

If H Like "#:" Then

H = 0 & H

ElseIf Not IsNumeric(H) Then

H = ""

ElseIf CInt(H) > 23 Then

H = ""

Else

H = H & ":"

End If

Case 3

Case 4

If Not IsNumeric(Right(H, 1)) Then H = Left(H, 3)

Case 5

If Not IsNumeric(Right(H, 2)) Then

H = Left(H, 3)

ElseIf CInt(Right(H, 2)) > 59 Then

H = Left(H, 3)

End If

Case Else

H = ""

End Select

TextBox5.Value = H

cordialement,

bouddha62

Bonjour,

Avec DateDiff() :

Sub Test()

    Dim H1 As Date
    Dim H2 As Date

    H1 = CDate("10:25:00")
    H2 = CDate("09:30:00")

    'déduit la première à la seconde (H1 - H2)
    If DateDiff("s", H1, H2) < 0 Then MsgBox "Pas bon du tout !" Else MsgBox "Nickel !"

End Sub

merci à toi de me répondre aussi rapidement, mais peux tu me dire ou placer ce code et peux tu me l'expliquer.

merci à toi

Re,

Je verrai plus le contrôle de validité sur Exit() plutôt que sur Change() :

'Heure de début
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If TextBox4.Text = "" Then Exit Sub

    If Valider(TextBox4.Text) = False Then

        MsgBox "L'heure doit être entrée au format 'hh:mm:ss' !"
        Cancel = True
        Exit Sub

    End If

    'les 2 textbox doivent être renseigné et si on arrive là, c'est qu'ils ont
    'passés les testes de validité !
    If TextBox4.Text <> "" And TextBox5.Text <> "" Then

        If DateDiff("s", CDate(TextBox4.Text), CDate(TextBox5.Text)) < 0 Then

            MsgBox "L'heure de fin doit être supérieure à l'heure de début !"
            Cancel = True

        End If

    End If

End Sub

'Heure de fin
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If TextBox5.Text = "" Then Exit Sub

    If Valider(TextBox5.Text) = False Then

        MsgBox "L'heure doit être entrée au format 'hh:mm:ss' !"
        Cancel = True
        Exit Sub

    End If

    'les 2 textbox doivent être renseigné et si on arrive là, c'est qu'ils ont
    'passés les testes de validité !
    If TextBox4.Text <> "" And TextBox5.Text <> "" Then

        If DateDiff("s", CDate(TextBox4.Text), CDate(TextBox5.Text)) < 0 Then

            MsgBox "L'heure de fin doit être supérieure à l'heure de début !"
            Cancel = True

        End If

    End If

End Sub

Function Valider(H As Variant) As Boolean

    If Mid(H, 3, 1) <> ":" Then Valider = False: Exit Function
    If Mid(H, 6, 1) <> ":" Then Valider = False: Exit Function
    If Not IsNumeric(Left(H, 2)) Then Valider = False: Exit Function
    If CInt(Left(H, 2)) > 23 Then Valider = False: Exit Function
    If Not IsNumeric(Mid(H, 4, 2)) Then Valider = False: Exit Function
    If CInt(Mid(H, 4, 2)) > 59 Then Valider = False: Exit Function
    If Not IsNumeric(Right(H, 2)) Then Valider = False: Exit Function
    If CInt(Right(H, 2)) > 59 Then Valider = False: Exit Function

    Valider = True

End Function
Rechercher des sujets similaires à "heure debut fin textbox"