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

Modifier les Tabindex

7 réponses
Avatar
Patrick BASTARD
Bonsoir à tous.

J'en suis toujours à vouloir passer d'un textbox à l'autre, puis à revenir
au premier après copie des données dans ma feuille.

La situation à l'initialisation de l'UserForm :
- tous les TabStop sont à False, sauf les 2 TextBox concernés qui sont à
True
- la valeurs TabIndex de Saisie C5 est 1
- la valeur TabIndex de SaisiePlomb est 2

Les recherches sur Google.group, sur la Faq, et sur l'ensemble des liens
glanés au jour le jour ne m'ont pas apporté la solution.
J'ai fait de multiples tentatives, avec SetFocus sans résultat.

J'ai également essayé de tricher avec les 2 dernières lignes du code
suivant, mais il ne met pas le focus sur TextBoxSaisieC5 après une saisie
(via lecteur codes à barre) dans TextBoxSaisiePlomb.
##########################
Private Sub TextBoxSaisiePlomb_Change()
InsereUneLigne 'puis recopie les valeurs saisies sur la
ligne insérée :

ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb

Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
*Me.TextBoxSaisieC5.TabIndex =
Me.TextBoxSaisiePlomb.TabIndex + 1*
*Me.TextBoxSaisiePlomb.TabIndex =
Me.TextBoxSaisieC5.TabIndex + 1*
End Sub
######################
Auriez-vous une solution pour ce problème particulier ?
D'avance, merci.
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.

7 réponses

Avatar
Youky
Bonjour Patick,
A tester,
Pour le textbox du code barre utilise Change avec Len
comme déja cité...j'ai remplacé 5 par 13 en principe un code barre utilise
13 chiffres

Private Sub TextBox1_Change()
If Len(TextBox1) = 13 Then
Me.TextBox2.SetFocus
End If
End Sub

Et pour l'autre TextBox on teste l'appui de la touche ENTRER

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub 'touche Entrer
TextBox1.SetFocus
End If

Attention aussi, tu effaces le textbox donc l'évenement recommence et sans
doute bloque
Utilise
Application.EnabledEventsúlse
'effacement
Application.EnabledEvents=true
Youky

"Patrick BASTARD" a écrit dans le
message de news: %
Bonsoir à tous.

J'en suis toujours à vouloir passer d'un textbox à l'autre, puis à revenir
au premier après copie des données dans ma feuille.

La situation à l'initialisation de l'UserForm :
- tous les TabStop sont à False, sauf les 2 TextBox concernés qui sont à
True
- la valeurs TabIndex de Saisie C5 est 1
- la valeur TabIndex de SaisiePlomb est 2

Les recherches sur Google.group, sur la Faq, et sur l'ensemble des liens
glanés au jour le jour ne m'ont pas apporté la solution.
J'ai fait de multiples tentatives, avec SetFocus sans résultat.

J'ai également essayé de tricher avec les 2 dernières lignes du code
suivant, mais il ne met pas le focus sur TextBoxSaisieC5 après une saisie
(via lecteur codes à barre) dans TextBoxSaisiePlomb.
##########################
Private Sub TextBoxSaisiePlomb_Change()
InsereUneLigne 'puis recopie les valeurs saisies sur
la ligne insérée :

ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb

Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
*Me.TextBoxSaisieC5.TabIndex =
Me.TextBoxSaisiePlomb.TabIndex + 1*
*Me.TextBoxSaisiePlomb.TabIndex =
Me.TextBoxSaisieC5.TabIndex + 1*
End Sub
######################
Auriez-vous une solution pour ce problème particulier ?
D'avance, merci.
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.



Avatar
Youky
Re,
Essai comme cela

Private Sub TextBoxSaisiePlomb_Change()
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEventsúlse
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents=True
TextBoxSaisieC5.SetFocus
End Sub

Youky
Avatar
Patrick BASTARD
Bonjour, *Youky*

J'ai testé l'une et l'autre de tes 2 propositions (dont je te remercie).
j'ai également testé
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnabledEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnabledEvents = True
UserForm1.Frame2.ZOrder (Top)
Me.TextBoxSaisieC5.SetFocus
La solution n'es hélas pas au rendez-vous.
Mais tu m'as donné une idée.

Après saisie du 2° TextBox, la recopie s'effectue correctement.
Le seul problème est que je perds le focus, et que, pour que le curseur se
repositionne sur le TextBoxSaisieC5, je dois sélectionner celui-ci avec la
souris, ou simplement (?) la FrameSaisie sur laquelle se trouvent mes 2
TextBox; et là cela fonctionne.

Il suffirait donc (!) que je simule par code l'action de sélectionner ce 1er
Textbox (ou la Frame qui le contient).
Si toi ou un autre lecteur de ce post avait le code pour ce faire, je pense
que ce problème serait résolu.

A suivre donc...

ps : à la fin de l'exécution, l'appui sur tab ou enter ne place le curseur
dans aucun champ de saisie.
Qui a piqué le focus ?
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.
Re,
Essai comme cela

Private Sub TextBoxSaisiePlomb_Change()
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEventsúlse
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents=True
TextBoxSaisieC5.SetFocus
End Sub

Youky


Avatar
Youky
Qui a piqué le focus ?
Le voleur est sans doute l'onglet qui avec activecell essai de le conserver

Donc, redonner le focus à Frame2 comme ceci

ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents = True
UserForm1.Frame2.Activate
Me.TextBoxSaisieC5.SetFocus

Je ne peux rien tester de plus
*Youky*



"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Youky*

J'ai testé l'une et l'autre de tes 2 propositions (dont je te remercie).
j'ai également testé
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnabledEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnabledEvents = True
UserForm1.Frame2.ZOrder (Top)
Me.TextBoxSaisieC5.SetFocus
La solution n'es hélas pas au rendez-vous.
Mais tu m'as donné une idée.

Après saisie du 2° TextBox, la recopie s'effectue correctement.
Le seul problème est que je perds le focus, et que, pour que le curseur se
repositionne sur le TextBoxSaisieC5, je dois sélectionner celui-ci avec la
souris, ou simplement (?) la FrameSaisie sur laquelle se trouvent mes 2
TextBox; et là cela fonctionne.

Il suffirait donc (!) que je simule par code l'action de sélectionner ce
1er Textbox (ou la Frame qui le contient).
Si toi ou un autre lecteur de ce post avait le code pour ce faire, je
pense que ce problème serait résolu.

A suivre donc...

ps : à la fin de l'exécution, l'appui sur tab ou enter ne place le curseur
dans aucun champ de saisie.
Qui a piqué le focus ?
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.
Re,
Essai comme cela

Private Sub TextBoxSaisiePlomb_Change()
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEventsúlse
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents=True
TextBoxSaisieC5.SetFocus
End Sub

Youky






Avatar
Patrick BASTARD
Bonjour, *Youky*

Merci pour ton aide.

Je viens à l'instant de trouver la solution, sans ajouter de code, et me
fais un plaisir de la partager :

la propriété cycle de la frame concernée doit être mise à fmCycleCurrentForm

ET CA FONCTIONNE DU FEU DE DIEU !!!

Désolé de crier, mais c'est de joie.
Pratiquement 8 jours que je cherche.

Je vais pouvoir m'endormir ce soir sans craindre d'en rêver.
;-)

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.


Qui a piqué le focus ?
Le voleur est sans doute l'onglet qui avec activecell essai de le

conserver Donc, redonner le focus à Frame2 comme ceci

ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents = True
UserForm1.Frame2.Activate
Me.TextBoxSaisieC5.SetFocus

Je ne peux rien tester de plus
*Youky*



"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Youky*

J'ai testé l'une et l'autre de tes 2 propositions (dont je te
remercie). j'ai également testé
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnabledEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnabledEvents = True
UserForm1.Frame2.ZOrder (Top)
Me.TextBoxSaisieC5.SetFocus
La solution n'es hélas pas au rendez-vous.
Mais tu m'as donné une idée.

Après saisie du 2° TextBox, la recopie s'effectue correctement.
Le seul problème est que je perds le focus, et que, pour que le
curseur se repositionne sur le TextBoxSaisieC5, je dois sélectionner
celui-ci avec la souris, ou simplement (?) la FrameSaisie sur
laquelle se trouvent mes 2 TextBox; et là cela fonctionne.

Il suffirait donc (!) que je simule par code l'action de
sélectionner ce 1er Textbox (ou la Frame qui le contient).
Si toi ou un autre lecteur de ce post avait le code pour ce faire, je
pense que ce problème serait résolu.

A suivre donc...

ps : à la fin de l'exécution, l'appui sur tab ou enter ne place le
curseur dans aucun champ de saisie.
Qui a piqué le focus ?
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.
Re,
Essai comme cela

Private Sub TextBoxSaisiePlomb_Change()
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEventsúlse
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents=True
TextBoxSaisieC5.SetFocus
End Sub

Youky






Avatar
Youky
Re
Je n'ai jamais fait le moindre click de souris sur cette propriété.
Ce sera fait demain . . .! . . FEU DE DIEU . .!!!!
Bravo... c'était pas facile
Youky

"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Youky*

Merci pour ton aide.

Je viens à l'instant de trouver la solution, sans ajouter de code, et me
fais un plaisir de la partager :

la propriété cycle de la frame concernée doit être mise à
fmCycleCurrentForm

ET CA FONCTIONNE DU FEU DE DIEU !!!

Désolé de crier, mais c'est de joie.
Pratiquement 8 jours que je cherche.

Je vais pouvoir m'endormir ce soir sans craindre d'en rêver.
;-)

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.


Qui a piqué le focus ?
Le voleur est sans doute l'onglet qui avec activecell essai de le

conserver Donc, redonner le focus à Frame2 comme ceci

ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents = True
UserForm1.Frame2.Activate
Me.TextBoxSaisieC5.SetFocus

Je ne peux rien tester de plus
*Youky*



"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Youky*

J'ai testé l'une et l'autre de tes 2 propositions (dont je te
remercie). j'ai également testé
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnabledEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnabledEvents = True
UserForm1.Frame2.ZOrder (Top)
Me.TextBoxSaisieC5.SetFocus
La solution n'es hélas pas au rendez-vous.
Mais tu m'as donné une idée.

Après saisie du 2° TextBox, la recopie s'effectue correctement.
Le seul problème est que je perds le focus, et que, pour que le
curseur se repositionne sur le TextBoxSaisieC5, je dois sélectionner
celui-ci avec la souris, ou simplement (?) la FrameSaisie sur
laquelle se trouvent mes 2 TextBox; et là cela fonctionne.

Il suffirait donc (!) que je simule par code l'action de
sélectionner ce 1er Textbox (ou la Frame qui le contient).
Si toi ou un autre lecteur de ce post avait le code pour ce faire, je
pense que ce problème serait résolu.

A suivre donc...

ps : à la fin de l'exécution, l'appui sur tab ou enter ne place le
curseur dans aucun champ de saisie.
Qui a piqué le focus ?
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.
Re,
Essai comme cela

Private Sub TextBoxSaisiePlomb_Change()
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEventsúlse
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents=True
TextBoxSaisieC5.SetFocus
End Sub

Youky










Avatar
Patrick BASTARD
Bonsoir, *Youky*

;-)


Re
Je n'ai jamais fait le moindre click de souris sur cette propriété.
Ce sera fait demain . . .! . . FEU DE DIEU . .!!!!
Bravo... c'était pas facile
Youky

"Patrick BASTARD" a écrit dans le
message de news:
Bonjour, *Youky*

Merci pour ton aide.

Je viens à l'instant de trouver la solution, sans ajouter de code,
et me fais un plaisir de la partager :

la propriété cycle de la frame concernée doit être mise à
fmCycleCurrentForm

ET CA FONCTIONNE DU FEU DE DIEU !!!

Désolé de crier, mais c'est de joie.
Pratiquement 8 jours que je cherche.

Je vais pouvoir m'endormir ce soir sans craindre d'en rêver.
;-)

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.


Qui a piqué le focus ?
Le voleur est sans doute l'onglet qui avec activecell essai de le

conserver Donc, redonner le focus à Frame2 comme ceci

ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents = True
UserForm1.Frame2.Activate
Me.TextBoxSaisieC5.SetFocus

Je ne peux rien tester de plus
*Youky*



"Patrick BASTARD" a écrit dans
le message de news:
Bonjour, *Youky*

J'ai testé l'une et l'autre de tes 2 propositions (dont je te
remercie). j'ai également testé
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnabledEvents = False
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnabledEvents = True
UserForm1.Frame2.ZOrder (Top)
Me.TextBoxSaisieC5.SetFocus
La solution n'es hélas pas au rendez-vous.
Mais tu m'as donné une idée.

Après saisie du 2° TextBox, la recopie s'effectue correctement.
Le seul problème est que je perds le focus, et que, pour que le
curseur se repositionne sur le TextBoxSaisieC5, je dois
sélectionner celui-ci avec la souris, ou simplement (?) la
FrameSaisie sur laquelle se trouvent mes 2 TextBox; et là cela
fonctionne. Il suffirait donc (!) que je simule par code l'action de
sélectionner ce 1er Textbox (ou la Frame qui le contient).
Si toi ou un autre lecteur de ce post avait le code pour ce faire,
je pense que ce problème serait résolu.

A suivre donc...

ps : à la fin de l'exécution, l'appui sur tab ou enter ne place le
curseur dans aucun champ de saisie.
Qui a piqué le focus ?
--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.
Re,
Essai comme cela

Private Sub TextBoxSaisiePlomb_Change()
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Application.EnableEventsúlse
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Application.EnableEvents=True
TextBoxSaisieC5.SetFocus
End Sub

Youky