Résolu XL 2016 VBA : re-focuser sur un controle apres un clic sur un bouton

fred19732

XLDnaute Nouveau
Bonjour,

j'ai essayé plein de trucs, mais je suis quasi persuadé qu’il y a une aide toute simple.

J'ai pas de fichier à montrer, c'est juste une question que je me posais.

situation: j'ai un userform sur lequel il y a 2 text box et un bouton.

en fait je voudrais pouvoir remplir un des deux text box, sans savoir lequel à l'avance, et cliquer sur le bouton qui va faire une action (peu importe) et ensuite revenir sur le textbox sur lequel j'étais et continuer à écrire dedans.

Si quelqu’un a une idée.....

merci d'avance
 
Ce fil a été résolu! Aller à la solution…

Ikito

XLDnaute Occasionnel
Bonjour fred19732,

Après l'exécution de ton code au clic du bouton, ajouter :
VB:
[TonTextBox].Activate
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
ou dans les propriété du bouton tu met la propriété "takefocusonclick " a false tout simplement
Attention la touche enter déclenche le exit et afterupdate aussi du textbox donc prévois de bloquer la touche enter dans le keydown "if keycode=13 or keycode=9 then keycode=0"
 

Eric C

XLDnaute Accro
Bonjour le forum
Bonjour fred, Ijito
Oupsssss Bonjour également à Patrick et mapomme

fred ne sait pas lequel des 2 TextBoxs il va renseigner, donc :
VB:
Private Sub CommandButton1_Click()

[A1] = "Bonjour"

    If TextBox1 = "" Then
      TextBox2.SetFocus
ElseIf TextBox2 = "" Then
      TextBox1.SetFocus
End If

End Sub
Ma signature.gif
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
en fait je voudrais pouvoir remplir un des deux text box, sans savoir lequel à l'avance, et cliquer sur le bouton qui va faire une action (peu importe) et ensuite revenir sur le textbox sur lequel j'étais et continuer à écrire dedans.
je répète donc
takefocusonclick a false
a moins que l'action soit d'aller activer une feuille ou je ne sais quoi d'autre le textbox ne perd pas le focus et ca n’empêche pas le bouton de faire ce qu'il a a faire

demonstaration
demo3.gif
et pas besoins de code!!!!!!
 

patricktoulon

XLDnaute Barbatruc
Bonjour @mapomme
moins élégant on s'en fou mais perso pour moi c'est du code inutile
on a cela en natif autant s'en servir
se sera toujours mieux contrôlé qu'un code qui pourrait occulter certaines situations dans le contexte
 

Eric C

XLDnaute Accro
Re,

Il est vrai que cette propriété (que je ne connaissais pas) est bien pratique et surtout rapide car comme tu le dis ... et pas besoin de code !!!
 

patricktoulon

XLDnaute Barbatruc
re
@Eric C
à la bonne heure!!! ;)
attention tout de même!!!!!!!!!!! la touche ENTER ou TAB QUI passe au Control suivant dans le tableau (tabindex) !!!!!!!!!!!!!!!!!


la oui le code est utile
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Or KeyCode = 9 Then KeyCode = 0
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Or KeyCode = 9 Then KeyCode = 0
End Sub
je dis ça moi j'dis rien hein Eric C ;)
voir meme les fleches aussi j'en suis pas sur :oops:
 

fred19732

XLDnaute Nouveau
en fait je veux pouvoir saisir du texte dans n'importe quelle textbox, mais que en cliquant sur le bouton, je fasse une action et puisse ensuite revenir sur la textbox ou j'écrivais.
par exemple: je saisis 'bonjour en TB2', puis je clique sur le bouton qui fait une action (peut importe quoi), et dès qu'il a fait ca, je continue d'écrire dans tb1, par ex 'ca va?'. ou alors je fais la meme chose dans tb2. l'utilisateur pourra choisir quelle tb il a envie, il faudra qu'il revienne dans celle qu'il a choisi au debut sans être obligé de recliquer dedans.
 

fred19732

XLDnaute Nouveau
Bonjour,

Tout d'abord merci a tous pour vos réponses. JE pense malgré tout que je n'ai pas bien posé le problème.
Vos solutions marchent, mais en fait pas pour ce que je veux.
Je pensais que quelque soit l'action faite par le bouton ca le ferait. mais non.
donc je repose mon problème.

On a donc 2 Textbox (dans mon idée il pourra y en avoir plus), et un bouton (pareil la aussi, j'en aurai peut être plus).

en fait je voudrais pouvoir écrire dans un textbox choisi aléatoirement, puis cliquer sur un bouton, aussi choisi aléatoirement, que ce bouton m'insère un symbole particulier au moyen d'un CHRW(2222) par ex) dans le textbox ou j'aurai commencé à écrire et qu'ensuite je puisse continuer à écrire dans ce même textbox
Note : le terme aléatoire ne signifie pas qu'il y ait une fonction 'aléatoire', c'est l'utilisateur qui aura le choix de sa textbox.

Voila j'espère avoir été un peu plus clair dans ma demande.

Encore un très gros merci à tous ceux qui ont pris et qui prendront le temps de me donner un coup de main.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

fred19732
Une question posée en 2019 et une même question (ou prou) posée en 2020, c'est ce qu'on peut appeler un fil doublon, non? ;)
(même si l'année change)
 
Ce message a été identifié comme étant une solution!

fred19732

XLDnaute Nouveau
Bon alors j'ai trouvé.... merci de votre aide..
En fait,

Les boutons, je les ai mis en takefocusonclick a false
Puis sur chaque bouton, j'ai mis le code
sub but1_click
activecontrol=activecontrol & CHRW(8888), par exemple.
end sub

et avec cela, tout fonctionne comme je le souhaite.

Alors merci a tous pour votre aide. désolé pour le doublons, mais tout est résolu maintenant...

bonne journée à tous
 

fred19732

XLDnaute Nouveau
Bonjour,

@patricktoulon, merci pour ton aide, et désolé, mais je n'avais eu le temps que de lire en travers. Ta réponse était tout à fait pertinente et oui, j'aurais du mieux lire. inutile de sortir lol.

une autre question cependant, j'ai remarqué que si les textbox etaient sur un userframe par exemple, le 'takefocusonclick' ne marchait pas, car le focus etait fait sue le userframe et pas sur la text box.
y aurait il un moyen de coutourner cela?

et, promis, je lirai mieux la prochaine fois
 

patricktoulon

XLDnaute Barbatruc
bonjour
je viens de tester avec un textbox dans une frame qui elle même est dans un userform
j'ai mis 2 boutons un dans la frame et l'autre dans le userform a coté de la frame
résultat aucun problème le textbox garde le focus
par contre le selstart ne va pas plus loin qu'avant le chr(2222) ce caractère n'est donc pas pris en compte dans le len donc attention il semblerais que écrire après ce caractère ne soit pas possible
 

fred19732

XLDnaute Nouveau
j'ai un peu tout essayé, ce système n e fonctionne que si le textbox et le bouton est sur l'userform. Dès lors qu'un frame s’intercale entre les deux, cela ne marche plus. Je pense que je vais revoir l'interface pour eviter le frame et le multipage car je pense que je vais être confronté au même problème.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas