Problème avec set focus sur textbox d'un userform

  • Initiateur de la discussion Initiateur de la discussion donpopo
  • 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 !

donpopo

XLDnaute Occasionnel
Bonjour le forum,
J'ai créé un userform appelé CONNECTION tout simple (une textbox1 et un bouton "quitter")
Ma textbox est limitée à 4 caractères et mise en autotab.
Si le code encodé est correct, l'userform se ferme et donne accès au fichier.
Pas de problème.

Cependant, lorsque je tape un mot de passe erroné, après le message d'erreur, je souhaite que le focus se remette sur Textbox1 et là je bloque; le focus se met de suite sur le bouton Quitter.
Voici le code que j'ai mis:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = MDP Then
CONNECTION.Hide
Else
TextBox1.Value = ""
MsgBox ("MOT DE PASSE ERRONE !")
TextBox1.SetFocus
End If
End Sub

Je ne vois pas le problème.
Si quelqu'un a une idée?
Merci d'avance
Donpopo
 
Bonjour donpopo

Ajoute une 2ème textbox, supprime les lignes après Else.

Avec Textbox1_AfterUpdate()

If TextBox1.Value <> MDP Then
TextBox1.Value = ""
MsgBox ("MOT DE PASSE ERRONE !")
TextBox1.SetFocus
End If

EDIT: ne prend pas en consideration la macro, ça ne fonctionne pas.
 
Dernière édition:
Bonjour.
Je suppose que les procédures évènements liées au gain ou à la perte de focus ne peuvent guère supporter un changement de celui ci durant leur exécution. Pourquoi ne mettez vous pas plutôt à True le paramètre Cancel transmis ?
 
J'ai un problème;
j'ai corrigé ma procédure, mais cela n'accepte aucun mot de passe; j'ai du faire une erreur.
Entretemps, je ne sais plus entrer dans mon programme pour le corriger. Comment contourner ce problème?
Sans mot de passe, le classeur se ferme; comment arriver à modifier en VBA.
 
Ca va, j'ai résolu le problème de blocage en ouvrant un autre fichier Excel; cela m'a permit d'accéder à VBA.

Mais j'ai essayé la procédure proposée par Lone-wolf,; le focus ne se remet pas sur la textbox1, mais bien sur le bouton quitter qui est en deuxième position en Tabindex.

Textbox1_AfterUpdate()
If TextBox1.Value <> MDP Then
TextBox1.Value = ""
MsgBox ("MOT DE PASSE ERRONE !")
TextBox1.SetFocus
else userform1.hide
End If

upload_2018-6-5_16-53-0.jpeg


Je ne vois pas ce qui cloche.
 
Bonjour le fil, bonjour le forum,

Essaie comme ça :

VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox1.Value = "" Then Exit Sub
If TextBox1.Value = MDP Then
    Unload Me
Else
    Cancel = True
    TextBox1.Value = ""
    MsgBox ("MOT DE PASSE ERRONE !")
End If
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub
 
Bonjour le forum
Bonjour donpopo, lone-wolf, Dranreb et l'Excellent Robert (Vous êtes tous & toutes excellents)

Dranreb t'avais mis sur la voie :
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True

If TextBox1.Value = "MDP" Then
Me.Hide
Else
TextBox1.Value = ""
MsgBox "Veuillez entrer un code valide.", vbOKOnly, "Erreur"
TextBox1.SetFocus
End If
End Sub

mais Robert est passé par là.
@micalement
Eric C
 
Bon_soir

Salut Robert, en général je remplace Cancel par Oust, c'est mieux (voire mal) compris. 😉

Ici, on peut ne pas faire appel à Exit avec les Focus comme dans l'exemple joint (une preuve par 9).

Nota : je n'entre pas dans la discussion de savoir si c'est utile ou pas mais il faut quand même développer un peu plus l'affaire.
 

Pièces jointes

- 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

  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
128
Réponses
4
Affichages
967
Réponses
2
Affichages
947
Retour