Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplir une textbox d'un click !

13 réponses
Avatar
Hubert
Bonjour
J'ai un userform avec plein de textbox, elles sont remplies ensuite par des
chiffres à l'aide du clavier. Est il possible - par le click d'un bouton - de
remplir la textbox selectionnée par le setfocus. Peut différencier la textbox
qui possede le setfocus parmis un tas d'autre ? Merci d'avance

Hubert

10 réponses

1 2
Avatar
LE TROLL
Bonjour,

Tu as lostfocus, gotfocus en évènement pur les objets, voir l'aide...
Tu peux mettre aussi une validation à chaque TextBox (commandButton) et
faire avec le bouton tes affichages.
Tu peux encore, mettre des drapeaux dans ta procédure, genre:
dim drapeau(9) as boolean
dim i as long

sub text1_change...
fo i = 0 to 9
drapeaux = false
next i
drapeau(0)=true
end sub

sub text2_change...
fo i = 0 to 9
drapeaux = false
next i
drapeau(1)=true
end sub

Ou si c'est indicé:

sub text2_change...(index as ...)
fo i = 0 to 9
drapeaux = false
next i
drapeau(index)=true
end sub

Ainsi, en interrogeant "drapeaux", tu sais où tu es... Reste à savoir si tes
textBox sont indicés ou non ???

Etc, etc...
-------

Mais je ne comprends pas trop ce que tu veux faire, car si tu veux avoir des
affichages automatiques dans certain textBox, s'ils sont fixes, suffit de
mettre le contenu au lancement, et si ça dépend d'un calcul d'autres
contenus de textBox, ben en fin, lors de la validation tu peux compléter les
textBox à écriture résultant d'un calcul... Mais peut être veux-tu avoir le
calcul en cours de route?

--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Hubert" a écrit dans le message de news:

Bonjour
J'ai un userform avec plein de textbox, elles sont remplies ensuite par
des
chiffres à l'aide du clavier. Est il possible - par le click d'un bouton -
de
remplir la textbox selectionnée par le setfocus. Peut différencier la
textbox
qui possede le setfocus parmis un tas d'autre ? Merci d'avance

Hubert


Avatar
Hubert
Bonjour
J'ai 60 textbox !! certaines sont remplies à l'ouverture et d'autres à
compléter d'un chiffre de 1 à 5. Je voudrais eviter de lacher la souris;
selection par la souris d'une textbox puis selection du chiffre sur le
clavier. Je voudrais créer 5 bouton de 1 à 5, selectionner la textbox par le
focus qui va recevoir le chiffre suite au click sur le bouton correspondant !
Merci pour ton aide !

Hubert

"LE TROLL" a écrit :

Bonjour,

Tu as lostfocus, gotfocus en évènement pur les objets, voir l'aide...
Tu peux mettre aussi une validation à chaque TextBox (commandButton) et
faire avec le bouton tes affichages.
Tu peux encore, mettre des drapeaux dans ta procédure, genre:
dim drapeau(9) as boolean
dim i as long

sub text1_change...
fo i = 0 to 9
drapeaux = false
next i
drapeau(0)=true
end sub

sub text2_change...
fo i = 0 to 9
drapeaux = false
next i
drapeau(1)=true
end sub

Ou si c'est indicé:

sub text2_change...(index as ...)
fo i = 0 to 9
drapeaux = false
next i
drapeau(index)=true
end sub

Ainsi, en interrogeant "drapeaux", tu sais où tu es... Reste à savoir si tes
textBox sont indicés ou non ???

Etc, etc...
-------

Mais je ne comprends pas trop ce que tu veux faire, car si tu veux avoir des
affichages automatiques dans certain textBox, s'ils sont fixes, suffit de
mettre le contenu au lancement, et si ça dépend d'un calcul d'autres
contenus de textBox, ben en fin, lors de la validation tu peux compléter les
textBox à écriture résultant d'un calcul... Mais peut être veux-tu avoir le
calcul en cours de route?

--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Hubert" a écrit dans le message de news:

> Bonjour
> J'ai un userform avec plein de textbox, elles sont remplies ensuite par
> des
> chiffres à l'aide du clavier. Est il possible - par le click d'un bouton -
> de
> remplir la textbox selectionnée par le setfocus. Peut différencier la
> textbox
> qui possede le setfocus parmis un tas d'autre ? Merci d'avance
>
> Hubert





Avatar
jm
>"Hubert" wrote in message
news:
Bonjour
J'ai 60 textbox !! certaines sont remplies à l'ouverture et d'autres à
compléter d'un chiffre de 1 à 5. Je voudrais eviter de lacher la souris;
selection par la souris d'une textbox puis selection du chiffre sur le
clavier. Je voudrais créer 5 bouton de 1 à 5, selectionner la textbox par
le
focus qui va recevoir le chiffre suite au click sur le bouton
correspondant !
Merci pour ton aide !



hello,

C'est tres simple dans ce cas.

Tes textbox sont indexés, j'imagine, sinon index les.
L'idée est de faire une variable publique (déclarée
en haut de la forme)

Puis à chaque LostFocus, tu retiens dans cette variable l'index
de la textbox qui avait le focus.

Dans le code de tes boutons, tu te sers de cette variable pour
mettre à jour la bonne Textbox.

Voici le code, avec un seul bouton (celui qui correspond à la
valeur "1":

Dim LasttextBox As Integer

Private Sub Command1_Click()
Text1(LasttextBox).Text = "1" ' par exemple
End Sub

Private Sub Text1_LostFocus(Index As Integer)
LasttextBox = Index
End Sub

Si tes TextBoxes ne sont pas indexées (MAL (tm)):
- index les
- ou alors tu répètes 60 fois un truc comme ça:

Private Sub Text1_LostFocus()
LasttextBox = 1
End Sub

Private Sub Text1_LostFocus()
LasttextBox = 2
End Sub
etc.


Mais évidemment, la seule solution valable est d'avoir des TextBox indexées,
sinon c'est une (grave) erreur de design.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Hubert
Bonjour et merci !

J'ai essayé mais j'ai un bug "incompatibilité de type" avec ceci surligné de
jaune :
Text1(LasttextBox).Text = "1"
Désolé mais je ne suis pas expert !
J'ai indexé les textbox et mis ceci en tête de module :>

Private Sub Text1_LostFocus(Index As Integer)
LasttextBox = Index
End Sub

Ensuite voici le code du bouton :
Private Sub CommandButton4_Click()
Dim LasttextBox As Integer
Text1(LasttextBox).Text = "1"
End Sub

Quelque chose m'echappe c'est clair !!!

Merci encore

Hubert



"jm" a écrit :

>"Hubert" wrote in message
>news:
> Bonjour
> J'ai 60 textbox !! certaines sont remplies à l'ouverture et d'autres à
> compléter d'un chiffre de 1 à 5. Je voudrais eviter de lacher la souris;
> selection par la souris d'une textbox puis selection du chiffre sur le
> clavier. Je voudrais créer 5 bouton de 1 à 5, selectionner la textbox par
> le
> focus qui va recevoir le chiffre suite au click sur le bouton
> correspondant !
> Merci pour ton aide !

hello,

C'est tres simple dans ce cas.

Tes textbox sont indexés, j'imagine, sinon index les.
L'idée est de faire une variable publique (déclarée
en haut de la forme)

Puis à chaque LostFocus, tu retiens dans cette variable l'index
de la textbox qui avait le focus.

Dans le code de tes boutons, tu te sers de cette variable pour
mettre à jour la bonne Textbox.

Voici le code, avec un seul bouton (celui qui correspond à la
valeur "1":

Dim LasttextBox As Integer

Private Sub Command1_Click()
Text1(LasttextBox).Text = "1" ' par exemple
End Sub

Private Sub Text1_LostFocus(Index As Integer)
LasttextBox = Index
End Sub

Si tes TextBoxes ne sont pas indexées (MAL (tm)):
- index les
- ou alors tu répètes 60 fois un truc comme ça:

Private Sub Text1_LostFocus()
LasttextBox = 1
End Sub

Private Sub Text1_LostFocus()
LasttextBox = 2
End Sub
etc.


Mais évidemment, la seule solution valable est d'avoir des TextBox indexées,
sinon c'est une (grave) erreur de design.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/







Avatar
LE TROLL
Bonjour bis,

Ta variable last... faut la déclarer en globale, en haut de la feuille, car
si tu la déclares dans le bouton, elle n'est valable que pour cette
procédure (locale), de facto, la procédure du texte ne la reconnaît pas,
soit:

option explicit
dim lasttextBox as integer
sub text...
...
end sub
'
sub button...

...
end sub

--
Merci beaucoup, au revoir et à bientôt :o)
------
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Hubert" a écrit dans le message de news:

Bonjour et merci !

J'ai essayé mais j'ai un bug "incompatibilité de type" avec ceci surligné
de
jaune :
Text1(LasttextBox).Text = "1"
Désolé mais je ne suis pas expert !
J'ai indexé les textbox et mis ceci en tête de module :>

Private Sub Text1_LostFocus(Index As Integer)
LasttextBox = Index
End Sub

Ensuite voici le code du bouton :
Private Sub CommandButton4_Click()
Dim LasttextBox As Integer
Text1(LasttextBox).Text = "1"
End Sub

Quelque chose m'echappe c'est clair !!!

Merci encore

Hubert



"jm" a écrit :

>"Hubert" wrote in message
>news:
> Bonjour
> J'ai 60 textbox !! certaines sont remplies à l'ouverture et d'autres à
> compléter d'un chiffre de 1 à 5. Je voudrais eviter de lacher la
> souris;
> selection par la souris d'une textbox puis selection du chiffre sur le
> clavier. Je voudrais créer 5 bouton de 1 à 5, selectionner la textbox
> par
> le
> focus qui va recevoir le chiffre suite au click sur le bouton
> correspondant !
> Merci pour ton aide !

hello,

C'est tres simple dans ce cas.

Tes textbox sont indexés, j'imagine, sinon index les.
L'idée est de faire une variable publique (déclarée
en haut de la forme)

Puis à chaque LostFocus, tu retiens dans cette variable l'index
de la textbox qui avait le focus.

Dans le code de tes boutons, tu te sers de cette variable pour
mettre à jour la bonne Textbox.

Voici le code, avec un seul bouton (celui qui correspond à la
valeur "1":

Dim LasttextBox As Integer

Private Sub Command1_Click()
Text1(LasttextBox).Text = "1" ' par exemple
End Sub

Private Sub Text1_LostFocus(Index As Integer)
LasttextBox = Index
End Sub

Si tes TextBoxes ne sont pas indexées (MAL (tm)):
- index les
- ou alors tu répètes 60 fois un truc comme ça:

Private Sub Text1_LostFocus()
LasttextBox = 1
End Sub

Private Sub Text1_LostFocus()
LasttextBox = 2
End Sub
etc.


Mais évidemment, la seule solution valable est d'avoir des TextBox
indexées,
sinon c'est une (grave) erreur de design.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/









Avatar
Pascal B.
Salut cher Hubert,

le controle (un textbox par exemple) qui a le focus est representé par une propriété de la form:

ActiveControl

tu peux donc ecrire:

Private Sub Command1_Click()
ActiveControl = UneValeur
End Sub

Amicalement,
Pascal B.


"Hubert" wrote in message news:
| Bonjour
| J'ai 60 textbox !! certaines sont remplies à l'ouverture et d'autres à
| compléter d'un chiffre de 1 à 5. Je voudrais eviter de lacher la souris;
| selection par la souris d'une textbox puis selection du chiffre sur le
| clavier. Je voudrais créer 5 bouton de 1 à 5, selectionner la textbox par le
| focus qui va recevoir le chiffre suite au click sur le bouton correspondant !
| Merci pour ton aide !
|
| Hubert
|
| "LE TROLL" a écrit :
|
| > Bonjour,
| >
| > Tu as lostfocus, gotfocus en évènement pur les objets, voir l'aide...
| > Tu peux mettre aussi une validation à chaque TextBox (commandButton) et
| > faire avec le bouton tes affichages.
| > Tu peux encore, mettre des drapeaux dans ta procédure, genre:
| > dim drapeau(9) as boolean
| > dim i as long
| >
| > sub text1_change...
| > fo i = 0 to 9
| > drapeaux = false
| > next i
| > drapeau(0)=true
| > end sub
| >
| > sub text2_change...
| > fo i = 0 to 9
| > drapeaux = false
| > next i
| > drapeau(1)=true
| > end sub
| >
| > Ou si c'est indicé:
| >
| > sub text2_change...(index as ...)
| > fo i = 0 to 9
| > drapeaux = false
| > next i
| > drapeau(index)=true
| > end sub
| >
| > Ainsi, en interrogeant "drapeaux", tu sais où tu es... Reste à savoir si tes
| > textBox sont indicés ou non ???
| >
| > Etc, etc...
| > -------
| >
| > Mais je ne comprends pas trop ce que tu veux faire, car si tu veux avoir des
| > affichages automatiques dans certain textBox, s'ils sont fixes, suffit de
| > mettre le contenu au lancement, et si ça dépend d'un calcul d'autres
| > contenus de textBox, ben en fin, lors de la validation tu peux compléter les
| > textBox à écriture résultant d'un calcul... Mais peut être veux-tu avoir le
| > calcul en cours de route?
| >
| > --
| > Site éditeur MES ROMANS édités
| > http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
| > http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
| > Site de MES LOGICIELS
| > http://irolog.free.fr
| > mon adresse EMail
| > http://irolog.free.fr/ecrire/index.htm
| > ------------------------------------------------------------------------------------
| > "Hubert" a écrit dans le message de news:
| >
| > > Bonjour
| > > J'ai un userform avec plein de textbox, elles sont remplies ensuite par
| > > des
| > > chiffres à l'aide du clavier. Est il possible - par le click d'un bouton -
| > > de
| > > remplir la textbox selectionnée par le setfocus. Peut différencier la
| > > textbox
| > > qui possede le setfocus parmis un tas d'autre ? Merci d'avance
| > >
| > > Hubert
| >
| >
| >
Avatar
Jacques93
Bonjour,
Hubert a écrit :
Bonjour et merci !

J'ai essayé mais j'ai un bug "incompatibilité de type" avec ceci surligné de
jaune :
Text1(LasttextBox).Text = "1"
Désolé mais je ne suis pas expert !
J'ai indexé les textbox et mis ceci en tête de module :>

Private Sub Text1_LostFocus(Index As Integer)
LasttextBox = Index
End Sub

Ensuite voici le code du bouton :
Private Sub CommandButton4_Click()
Dim LasttextBox As Integer
Text1(LasttextBox).Text = "1"
End Sub

Quelque chose m'echappe c'est clair !!!

Merci encore

Hubert





Un petit doute : comme tu fais référence dans ta question à UserForm,
puis à CommandButton, ne serait tu pas sous VBA et non VB6 ?
Auquel cas le problème se poserait différemment dans mesure ou avec VBA,
on ne peut pas indicer les contrôles.

PS : Le message "incompatibilité de type" correspond bien a ce que l'on
obtient sous Excel en indiçant un contrôle.
--
Cordialement,

Jacques.
Avatar
Jacques93
Bonjour Pascal B.
Pascal B. a écrit :
Salut cher Hubert,

le controle (un textbox par exemple) qui a le focus est representé par une propriété de la form:

ActiveControl

tu peux donc ecrire:

Private Sub Command1_Click()
ActiveControl = UneValeur
End Sub




Il me semble que dès que tu auras clické sur le bouton, c'est lui qui
prendra le focus et deviendra par conséquent le contrôle actif de la
feuille.

Pour que le TextBox ne perde pas le focus il faudrait utiliser un
contrôle qui gère l'événement Click sans prendre le focus : un contrôle
Label, par exemple.

--
Cordialement,

Jacques.
Avatar
Clive Lumb
Hubert wrote:
Bonjour
J'ai un userform avec plein de textbox, elles sont remplies ensuite
par des chiffres à l'aide du clavier. Est il possible - par le click
d'un bouton - de remplir la textbox selectionnée par le setfocus.
Peut différencier la textbox qui possede le setfocus parmis un tas
d'autre ? Merci d'avance

Hubert



Si sous VB6, plutôt que VBA, pourquoi ne pas utiliser le drag and drop.

Par exemple, 10 labels avec captions de 0 à 9
Mettre DragMode à Automatique.

Puis dans le code evenement "DragDrop" des textbox il suffit de mettre
me.text1(Index).text=Source.Caption

Ensuite si on glisse un de labels sur le textbox, il prend la valeur du
label
Avatar
Pascal B.
Oui... tu as raison... j'ai répondu un peu vite.... :o(


"Jacques93" wrote in message news:%23%
| Bonjour Pascal B.
| Pascal B. a écrit :
| > Salut cher Hubert,
| >
| > le controle (un textbox par exemple) qui a le focus est representé par une propriété de la form:
| >
| > ActiveControl
| >
| > tu peux donc ecrire:
| >
| > Private Sub Command1_Click()
| > ActiveControl = UneValeur
| > End Sub
| >
|
| Il me semble que dès que tu auras clické sur le bouton, c'est lui qui
| prendra le focus et deviendra par conséquent le contrôle actif de la
| feuille.
|
| Pour que le TextBox ne perde pas le focus il faudrait utiliser un
| contrôle qui gère l'événement Click sans prendre le focus : un contrôle
| Label, par exemple.
|
| --
| Cordialement,
|
| Jacques.
1 2