XL 2016 UserForm : forcer la saisie sur le textBox

Sylvain133

XLDnaute Nouveau
Bonjour à tous,

J'aimerais savoir comment à l'ouverture d'un UserForm on peut faire pour ne pas cliquer sur la texteBox pour pouvoir saisir du texte mais être directement dessus (sans aide de la souris).

En vous remerciant d'avance pour vos retours.
 

jmfmarques

XLDnaute Accro
Je me permets à tout hasard d'appeler ton attention sur le fait que
- si ta textbox n'est pas multiline
- que la sa propriété Tabidex est 0 et celle du Frame est également 0
- si la propriété tabindex de ton bouton de commande est 1
la simple utilisation de la touche enter dans ta textbox te conduira tout droit à ton bouton de commande (que sa propriété TakefocusOnClick soit ou non à True. (et pour cause)
 

Sylvain133

XLDnaute Nouveau
@patricktoulon merci de ta réponse mais cela ne fonctionne pas, les lignes de code liées au clique du boutton 2 ("ACTUALISER") ne s'execute pas, rien ne se passe si je tappe sur la touche F5 mais je n'ai pas non plus de code d'erreur. Je suis toujours obligé de cliquer sur le bouton "ACTUALISER" à l'aide de la souris pour que ces lignes de code s'exécutent.

Private Sub CommandButton2_Click()
Me.Label2.Visible = False
Me.Label5.Visible = False
TextBox1 = ""
TextBox1.SetFocus
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then CommandButton2_Click
End Sub
 
Dernière édition:

Sylvain133

XLDnaute Nouveau
@jmfmarques j'ai bien vu tes messages merci. Mais là la touche Entrée me renvoie à mon bouton "VALIDER" (cf. photos que j'ai joins dans mes précédents messages). Maintenant je voudrais que la touche F5 me renvoie à mon boutton "ACTUALISER" (cf. photos joins précédemment également). Sachant que ces 2 boutons se trouvent dans le même frame.
 

jmfmarques

XLDnaute Accro
Ecoute : je ne sais pas ce que tu veux "fabriquer".
Aussi : sans préjudice de l'intérêt réel que tu y trouves (en général, ces "astuces" finissent par paumer l'utilisateur et donc être contreproductives) --->> regarde ce que fait ceci (où ta textbox est Textbox1 et tes deux boutons CommanButton1 et Commandbujtton2 :
1) mettre à True la propriété EnterKeyBehavior de ta textbox
2) ce code :
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case 144: CommandButton2_Click
    Case 13: CommandButton1_Click
  End Select
End Sub

Et regarde ce qui se passe quand, alors que tu es en train de saisir, tu utilises la touche Enter ou la touche F5

Il se peut que cela te satisfasse. Je te le déconseille vivement (pour les raisons que j'ai exposées ci-dessus).
 

patricktoulon

XLDnaute Barbatruc
jmfmarques
les touches F(x) vont de 112 à 123 chez moi et la F5 c'est 116

je répète donc
VB:
Private Sub CommandButton1_Click()
MsgBox "cc"
End Sub


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

et le must ,c'est que comme on appelle l’événement comme on appellerait une sub même si le bouton n'est pas dans la frame ça fonctionne
je viens encore de tester
 

Sylvain133

XLDnaute Nouveau
@patricktoulon ca fonctionne à merveille... cependant lorsque je ne suis pas entrain de taper du texte cela ne marche pas, il faut absolument que je sois en mode saisie dans le TextBox1 pour que cela fonctionne. Y'a t'il une possibilité que cela fonctionne sans être en mode saisie dans le TextBox1. Merci à vous 2 pour vos réponses.
 

patricktoulon

XLDnaute Barbatruc
re
dans ce cas la
tu a le choix
soit tu met le key up aussi au parent donc la frame et même au userform ( ce qui est plus simple pour un débutant )
soit tu utilise application.onkey avec condition que l'userform soit afficher
sans oublier de remettre le on key a l'origine a la sortie de l'userform
solution simple

VB:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then CommandButton1_Click
End Sub

 Sub Frame1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then CommandButton1_Click
End Sub

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

voila ;)
cela dit a condition que l'un des 3 soit l'object actif
 

Sylvain133

XLDnaute Nouveau
Private Sub textbox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then image1_Click
End Sub

Private Sub frame2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then image1_Click
End Sub

Private Sub userform_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 116 Then image1_Click
End Sub


Voilà le code mis en place, or celà ne marche toujours pas or saisie, merci de ton aide !
 

Sylvain133

XLDnaute Nouveau
C'est à dire qu'il faut le mettre uniquement sur le formulaire (ou le frame ?)

C'est juste que les personnes doivent entrer un numéro et lorsqu'ils tapent valider ils ne sont plus en mode saisie dans le textBox1 (c'est ce que je veux) et après une autre personne qui passe derrière devrait taper F5 pour actualiser (vider le TextBox1 de son contenu, et oui je veux qu'il reste apparent à l'écran le temps que l'utilisateur numéro 1 sera devant son écran). D'où ma volonté de vouloir tapper F5 sans être en mode saisie dans le TextBox1 du frame1. Merci de l'aide ;)
 

patricktoulon

XLDnaute Barbatruc
re
et bien normalement ca devrait marcher
j’espère que tu ne fait pas un unload au click bouton

si vraiment ca ne le fait pas ça veut dire que l'userform n'est pas la fenêtre active au moment ou tu tape f5 dans ce cas il te faut la 2d solution mais c'est dangereux surtout pour un débutant qui maîtrise pas le contexte ca peut faire des bugito dans le bourrin
 

Discussions similaires

Réponses
93
Affichages
2 K
Réponses
15
Affichages
511

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote