SetFocus ne fonctionne pas

Bonjour,

Dans le fichier ci-joint, lorsque j'inscris une donnée qui n'est pas une date, un message d'erreur apparaît. Après l'avoir confirmé, j'aimerais que le TextBox 5 soit à nouveau sélectionné, mais malgré le code ci-dessous, c'est le TextBox6 qui l'est

Private Sub TextBox5_AfterUpdate()
If Not IsDate(TextBox5) Then
    MsgBox ("Veuillez saisir une date")
    TextBox5 = ""
    TextBox5.SetFocus
    Exit Sub
End If
End Sub

Avez-vous une idée de correction ?

Cordialement.

39demo.xlsm (19.13 Ko)

Bonjour,

Une solution avec Exit

Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Msg, Style
    If Not IsDate(TextBox5) Then
        Cancel = True
        Msg = "Pour continuer, vous devez saisir une date "
        Style = vbOKCancel
        If MsgBox(Msg, Style) = vbCancel Then Cancel = False
        TextBox5 = ""
    End If
End Sub

A+

Bonjour,

A tester

Cdlt

Private Sub TextBox5_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox5) Then
    MsgBox ("Veuillez saisir une date.")
    TextBox5.Value = ""
    Cancel = True
End If
End Sub

Merci beaucoup à vous deux pour vos réponses.

Les deux solutions fonctionnent bien avec chacune des avantages et des (petits) inconvénients

J'aurais aimé en plus comprendre pourquoi ma solution ne fonctionnait pas, si jamais vous le savez

Bonne fin de journée.

Ce que je comprends, c'est qu'avec la méthode Setfocus tu peux prévoir de déplacer le focus sur les autres contrôles de type TextBox ou CommandButton de ton Userform, mais pour empêcher le TextBox5 de perdre le focus, il faut impérativement utiliser l'argument Cancel de l'événement.

A+

Salut Frangy et merci pour ton message

Il me semble t'avoir bien compris

Excellente salutations.

Rechercher des sujets similaires à "setfocus fonctionne pas"