XL 2016 Position du SetFocus après Message d'erreur

  • Initiateur de la discussion Initiateur de la discussion Goose
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Goose

XLDnaute Occasionnel
Bonjour à tous,
en partant du code ci-contre:
VB:
Private Sub TB_Email_AfterUpdate()
If InStr(TB_Email, "@") = 0 Or InStr(TB_Email, ".") = 0 Then
MsgBox ("Veuillez saisir une adresse mail valide")
End If
End Sub
Private Sub TB_Email_Change()
Form1.TB_Email = LCase(Trim(TB_Email)) 'LCase=minuscule
End Sub
comment faire en sorte que le curseur reste dans la textbox après avoir valider le message d'erreur ?
je ne sais pas ou mettre le SetFocus !!
Merci d'avance
Bye
 
Bonjour,
J'aurais fait comme ça, à essayer (je suis pas expert dans le domaine 😬) :
VB:
Private Sub TB_Email_AfterUpdate()
If InStr(TB_Email, "@") = 0 Or InStr(TB_Email, ".") = 0 Then
MsgBox ("Veuillez saisir une adresse mail valide")
Call TB_Email_Change
End If
End Sub
Private Sub TB_Email_Change()
Form1.TB_Email = LCase(Trim(TB_Email)) 'LCase=minuscule
End Sub
 
Bonjour.
Et la mienne ?
je ne suis pas assez calé pour appliquer ta solution, cependant j'avais un début de solution avec un code a adapter !! mais je galère un peu !!
VB:
Private Sub TB_Email_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
If TB_Email.Value = "MDP" Then
Me.Hide
Else
TB_Email.Value = ""
MsgBox ("Veuillez saisir une adresse mail valide.")
TB_Email.SetFocus
End If
End Sub
 
Bonjour Goose, Dranreb

Le code ci-dessus fonctionne très bien - Avec evèn Exit ou AfterUpDate (comme l'a précisé Dranreb). Ce qu'il te faut en plus dans l'USF c'et un second TextBox (caché ou invisible) afin qu'il soit sensé recevoir le focus quand tu fait "Entrée" .
@+ Eric c
 
Bonsoir le fil, le forum

@Goose - Remplace l'évènement :
Code:
Private Sub TB_Email AfterUpdate ()
par
VB:
Private Sub TB_Email_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
If InStr(TB_Email, "@") = 0 Or InStr(TB_Email, ".") = 0 Then
MsgBox "Veuillez saisir une adresse mail valide."
TB_Email = ""
TB_Email.SetFocus
End If
End Sub

Bonne soirée à toutes & à tous

Cela fait toujours plaisir de savoir que la contribution a aidé (ou pas).
N"hésitez pas à marquer le sujet comme résolu le cas échéant ou à liker.


@+ Eric c
 
Bonsoir.
Pas besoin de SetFocus car Cancel = True empêche déjà de quitter le contrôle. D'ailleurs on ne peut même plus le quitter si l'adresse mail est bonne dans le code de @Eric C car il y est fait systématiquement !
J'aurais fait comme ça :
VB:
Private Sub TB_Email_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If TB_Email.Text <> "" And Not TB_Email.Text Like "*@*.*" Then
      MsgBox "Veuillez saisir une adresse mail valide."
      Cancel = True: End If
   End Sub
Permet de le corriger au lieu de tout retaper, et aussi de le laisser non renseigné.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
741
Réponses
0
Affichages
535
Réponses
4
Affichages
537
Réponses
2
Affichages
938
Réponses
3
Affichages
905
Retour