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

Exènement TextBox_Exit

10 réponses
Avatar
Jc
Bonjour,

Soit un userform avec plusieurs "Frame"
Dans chaque Frame la structure est identique, avec notamment la
présence de 3 "TestBox" dont je veux tester la valeur avec l'évènement
Exit.
Si la valeur est inférieur à une donnée le focus va à l'objet suivant
dans l'ordre de tabulation sinon la saisie est sélectionnée et on
restedans le TxtBx.

Sur les deux premiers TxtBx tout se passe comme prévu, sur le troisième
et dernier (dans l'ordre de tabulation de la Frame) le programme ne
passe pas par l'évènement (vérifié avec un point d'arrêt).

Je joins le code dédié aux TxtBx d'un Frame

Dans le code ci-dessous, Me.Controls("FrameSecteur" & i1).Tag (dans
COMMUN_TxtBxNoteRef) fait référence à la valeur maximale à ne pas
dépasser (mis à jour à l'ouverture du UF)

Accessoiremnt je contourne le problème avec l'évènement Change mais
c'est frustrant.

Sub COMMUN_TxtBxNoteRef()
If Me.Controls("TextBoxNoteRef" & i1 & i2).Value >
Me.Controls("FrameSecteur" & i1).Tag Then
Call MsgBox("La note saisie est supérieure à la note maximale
autorisée pour ce secteur de notation.", vbExclamation, "Errare
humanum, perseverare diabolicum")
With Me.Controls("TextBoxNoteRef" & i1 & i2)
.SelStart = 0
.SelLength = Len(.Text)
.SetFocus
End With
James007 = True
Else
James007 = False
End If

End Sub

Private Sub TextBoxNoteRef11_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
i1 = 1
i2 = 1
COMMUN_TxtBxNoteRef
Cancel = James007
End Sub

Private Sub TextBoxNoteRef12_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
i1 = 1
i2 = 2
COMMUN_TxtBxNoteRef
Cancel = James007
End Sub

Private Sub TextBoxNoteRef13_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
i1 = 1
i2 = 3
COMMUN_TxtBxNoteRef
Cancel = James007
End Sub
'""""""""""""""""""""""

Private Sub TextBoxNoteRef13_Change()
i1 = 1
i2 = 3
COMMUN_TxtBxNoteRef
Cancel = James007

End Sub

--

______________________________________________
Jc

10 réponses

Avatar
Jc
Ce n'est pas que je me réponde mais est-ce parcequ'étant le dernier
contrôle de la Frame, l'évènement exit est "shunté" si tel est le cas ?
--
______________________________________________
Jc
Avatar
MichD
Bonjour,
Regarde l'exemple suivant :
https://www.cjoint.com/c/JCwl2mUHGRj
MichD
Avatar
Jc
Merci de t'occuper de mon cas
--
______________________________________________
Jc
Avatar
Jc
Parti trop vite
Ton exemple, en tout cas chez moi, reproduiy mon problème.
Dans le dernier txtbx du frame1 l'évènement exit est shunté; un appui
sur la touche de tabulation permet de passer au txtbx de la frame2
C'est comme si parce que le contrôle en cours est le dernier exit ne
compte pas.
Val est interressant, je ne connaissait pas.
--
______________________________________________
Jc
Avatar
Jc
En effectuant des essais, la sortie du dernier Controls TextBox d'un
Frame ne passe pas pas l'évènement Exit dudit contrôle.
Je vais contourner le problème en créant un faux fFrame avec deux
labels
Les frames n'ont pas de fonctions particulières (type OptionButton) si
ce n'est visuel pour grouper les données par thèmes.
--
______________________________________________
Jc
Avatar
MichD
Le 22/03/20 à 08:57, Jc a écrit :
Parti trop vite
Ton exemple, en tout cas chez moi, reproduiy mon problème.
Dans le dernier txtbx du frame1 l'évènement exit est shunté; un appui
sur la touche de tabulation permet de passer au  txtbx de la frame2
C'est comme si parce que le contrôle en cours est le dernier exit ne
compte pas.
Val est interressant, je ne connaissait pas.

Décris-moi ce que tu fais lorsque tu as saisi une valeur du Textbox3 de
la frame1.
Moi, si je fais cela et que j'appuie sur la touche "Tab", je passe au
textbox4 c'est-à-dire le premier textbox de la frame2. Je fais référence
au fichier que j'ai publié.
| Dans le dernier txtbx du frame1 l'évènement exit est shunté
**** Je ne comprends pas la ligne suivante...
MichD
Avatar
Jc
Re bonjour et merci
En utilisant le fichier que tu m'as envoyé :
1-Dans VBA, je mets un point d'arrêt au début des évènements Exit des
TextBox
2- Quand je lance le UF de démo, je rentre une donnée dans TxtBx1 puis
"Tab",comme il y a un point d'arrêt => VBA en pas à pas
3-TxtBx2 à le focus, même enchaînement... pour rentrer dans TxtBx3
4- Donnée dans TxtBx3, "Tab" ça ne passe pas par VBA, on rentre tout de
suite dans TxtBX4.
Or j'aimerais que comme pour les deux txtBx précédant une vérification
du contenu soit effectué à l'évènement Exit, pour le cas échéant ne pas
en sortir, rester sur le TxtBx3 en y sélectionnant l'ensemble de la
saisie.
PS :
Par contre une fois dans TxtBx4 avec la souris je rentre dans le 3 le
point d'arrêt fonctionne
J'espère avoir été clair pour cette histoire de "shunt".
Ca me turlupinne de ne pas comprendre pourquoi dans le dernier textbox
de la frame1 ça passe directement dans le premier txtbx de la frame2
sans passer par Exit comme pour les précédants.
Ceci dit j'ai contourné le problème dans mon projet.
--
______________________________________________
Jc
Avatar
MichD
Bonjour,
Voir le fichier joint : https://www.cjoint.com/c/JCwujJpwVKj
La sortie des Textbox3 de chacune des "Frame" requiert un traitement
spécial parce que l'événement (procédure) frame1_Exit ou "Frame2.Exit"
de produit avant l'événement (procédure) des textbox3. Il faut alors
jouer un peu d'astuce pour obtenir ce que tu désires.
MichD
Avatar
MichD
Retiens cette version du fichier, quelques légères corrections ont été
apportées au fichier du message précédent.
https://www.cjoint.com/c/JCwvT5rD7Fj
MichD
Avatar
Jc
Un grand merci Michel pour ta gentillesse et ta patience
--
______________________________________________
Jc