Pb de setFocus

Salut,

J'ai un code, lancé par un évènement AfterUpdate, pour contrôler la validité d'une adresse mail saisie dans un TextBox. Si l'adresse est invalide, je voudrais que l'opérateur soit contraint ou de saisir une adresse valide ou de supprimer l'adresse invalide. Pour ça le code du TextBox prévoit un SetFocus sur lui même si l'adresse est invalide.

Ca marche en pas à pas, mais dès le End Sub de la procédure AfterUpdate le focus revient sur le contrôle sélectionné par l'opérateur et qui a déclenché l'évènement AfterUpdate.

Comment faire pour que le focus reste sur le TextBox ?

Voilà mon code au cas où :

Private Sub Champ11_AfterUpdate()

'Contrôle de la validité de l'adresse mail
If ActiveControl <> "" Then
    Arobase = False
    Domaine = False
    Pays = False
    For i = 1 To Len(Me.Controls("Champ" & vbProfils_Mail))
        If Arobase = True And Domaine = True Then Pays = True
        If Arobase = False And Mid(ActiveControl, i, 1) = "@" Then Arobase = True
        If Arobase = True And Mid(ActiveControl, i, 1) = "." Then Domaine = True
    Next i
End If

If Not Pays = False Then
    MsgBox "Adresse mail non valide", , "MNav"
    Me.Controls("Champ" & vbProfils_Mail).SetFocus
    Else: Détection_modification Right(ActiveControl.Name, Len(ActiveControl.Name) - 5)
End If

End Sub

Merci d'avance.

A+

Manu

Bonjour le forum

Bonjour Manu

Voici le code que j'utilise pour obliger la saisie d'une date valide. Si celle-ci n'est pas correcte, l'utilisateur ne peut continuer.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
If .Value = "" Then Exit Sub
If Not IsDate(.Value) Or Len(.Text) = 8 Then
Cancel = True
.SelStart = 0
.SetFocus
.SelLength = Len(.Value)
Else
TheDate = .Value
End If
End With
End Sub

@+ Ericcool02

Nickel c'est ce qu'il me fallait.

Merci.

Manu

Rechercher des sujets similaires à "setfocus"