"Focus UserForm" ou OnKey "{ENTER}" ?

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

chewi

XLDnaute Junior
Bonjour à tous,

J'ai créé un UserForm contenant une TextBox1 et un CommandButton1.
Principe: On entre un texte dans la TextBox puis on clique sur le bouton de commande.
Un code analyse alors le contenu de la TextBox.

Ce que je voudrais, c'est lorsque je puisse appuyer sur la touche "ENTER" pour valider.

Mais lorsque l'on appuie sur la touche "ENTER", le focus étant sur la TextBox, il faut appuyer 1fois pour que le focus passe sur le bouton de commande et une 2ème fois pour "appuyer" sur le bouton de commande.

Est-il possible que lorsque j'appuie sur "ENTER", cela revienne à cliquer sur mon bouton?

J'ai regardé pour passer par "OnKey" mais je ne suis pas sur que ce soit la meilleure méthode.

Pouvez-vous m'aider ? je suis dans le flou.

Merci,

Chewi
 
Re : "Focus UserForm" ou OnKey "{ENTER}" ?

bonjour a tous,

l'évenement TextBox1_AfterUpdate() te permet d'executer un code quand tu appuie sur la touche entrée (validation de ton textbox)

nb: j'évite au maximum les sendkeys ... toujours source de prob
 
Re : "Focus UserForm" ou OnKey "{ENTER}" ?

Bonjour Catrice, Pierrejean, Mutzik,

Un grand merci à tous les 3 pour ces réponses rapides.

Je me suis basé sur un peu toutes vos méthodes:

Code:
Private Sub CommandButton1_Click()
If TextBox1.Text = "Ok" Then
    Unload UserForm1
Else
    TextBox1.SetFocus
End If
End Sub
'__________________

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
    CommandButton1_Click
End If
End Sub
'__________________

Private Sub UserForm_Activate()
    TextBox1.SetFocus
End Sub

Reste une petite fioriture à apporter:

Après avoir appuyer sur ENTER, lorsque le texte n'est pas bon, le focus se met sur le bouton de commande. L'idéal serait que le focus reste sur ma TextBox.

Cela est-il possible? Comment faire?

Merci à tous,

Chewi
 
Re : "Focus UserForm" ou OnKey "{ENTER}" ?

Re,

Lorsque j'utilise:
Code:
Private Sub TextBox1_AfterUpdate()
If TextBox1.Text = "Ok" Then
    Unload UserForm1
Else
    'TextBox1.SetFocus
End If
End Sub
,
j'ai une erreur: "Run-time error '-2147417848(80010108)', Automation error
"The object invoked has disconnected from its clients"

lorsque le texte est bon et s'il n'est pas bon, je n'ai pas d'erreur mais j'ai le même problème de focus. 😉

Voilà un peu pourquoi je préfère garder mon code et adapter ce qu'il manque pour le focus.

Merci,

Chewi

Edit: je ne vois pas où je fais une manip de plus ?
 
Re : "Focus UserForm" ou OnKey "{ENTER}" ?

Re,

le fait de devoir appuyer sur un bouton, c'est cela que je considère comme une manip de plus

j'ai mis un exemple à tout hasard ...

ton erreur provient du fait que tu 'unload' ton usf alors que le code qui lui est associé n'est pas completement terminé de s'exécuter (traitement du End if et End Sub)
 

Pièces jointes

Dernière édition:
Re : "Focus UserForm" ou OnKey "{ENTER}" ?

Re tous les 3,

1) Mutzik, excuse moi si je passe pour un râleur (j'en suis désolé) mais avec mon code, je ne dois appuyer sur rien d'autre non plus, seulement l'enfoncement de la touche ENTER, tout comme avec ton code.
L'avantage est qu'ici je peux unloader mon UserForm sans chipotage.

2) Catrice, merci! C'est exactement cela qu'il me manquait.
Voici le code final:
Code:
Private Sub CommandButton1_Click()
If TextBox1.Text = "Ok" Then
    Unload UserForm1
Else
    UserForm1.Hide
    UserForm1.TextBox1.Value = ""
    UserForm1.TextBox1.SetFocus
    UserForm1.Show
End If
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
    CommandButton1_Click
End If
End Sub

Private Sub UserForm_Activate()
    TextBox1.SetFocus
End Sub

3) Pierrejean, es-tu certain d'avoir mis le bon classeur en annexe ?😀

Merci à vous tous!!!
 
- 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
2
Affichages
306
Retour