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

Tabulations automatiques dans un userform - Le retour

1 réponse
Avatar
Patrick BASTARD
Bonsoir à tous.

Toujours avec mon Userform qui me pose problème : (Tabulation auto lors de
saisie à l'aide d'un lecteur de codes à barres).

Dans l'Userform, entre autres, une frame2 "Saisie" contenue dans une frame1
"Debut"
Le passage automatique du dernier contrôle "TextBoxCaisse" de la frame1 au
1er contrôle "TextBoxSaisieC5" de la frame 2 ne pose pas de problème.
La saisie de "TextBoxSaisieC5" (28 caractères obligatoires, exemple :
"%0075018DI211031249371289250") renseigne un "TextBoxIata" (frame 1), une
"ListBoxAutorisé" (frame 2) et un "TextBoxOK" (frame 1).
Jusqu'ici, pas de souci, seuls quelques tests de cohérence à finaliser.

Le problème qui m'amène est que le focus ne se déplace pas ensuite
automatiquement sur le TextBoxSaisiePlomb(frame 2). Et que je ne parviens
pas à savoir pourquoi.
J'ai essayé avec SetFocus, mais sans succès. Je ne sais pas où se cache le
focus après la maj du "TextBoxOk".
(une tabulation manuelle ne sélectionne rien, une 2° tabulation manuelle
sélectionne "TextBoxSaisieC5")

Pour info, seuls 2 contrôles ont le TabStop à True dans la frame 2 :
TextBoxSaisieC5 (TabIndex à 0) et TextBoxSaisiePlomb(TabIndex à 1).
Bien sûr, la frame 2 "Saisie" a un TabStop à True pour pouvoir passer
automatiquement de la frame 1 à la 2

Ensuite, si je sélectionne TextBoxSaisiePlomb avec la souris, et que je
saisis une valeur, tout fonctionne comme je le souhaite : le curseur se
replace automatiquement sur le TextBoxSaisieC5.

Dernière info à toutes fins utiles : une macro On Time met à jour toutes les
secondes un TextBox (indiquant l'heure) situé sur l'Usf (pas dans une
frame). Mais son inactivation ne résoud pas mon problème

Je vous joins sous ma signature les codes de SaisieC5 et SaisiePlomb, en
espérant que vous voudrez bien m'indiquer les erreurs, omissions ou
maladresses que j'y ai glissé. (Je débute sur les USF, et c'est le premier
un peu compliqué auquel je m'essaie.)
Fichier zippé (84 KO) : http://cjoint.com/?cDwBK73Ner

S'il vous vient une idée pour me dépatouiller de ce problème, je vous en
serais très très... reconnaissant : j'ai pris 2 jours de RTT pour y
travailler ! Je suis allé sur un nombre phénoménal de sites sur la toile
(j'ai appris plein de choses, ce n'était pas du temps perdu) sans trouver la
solution.

D'avance, merci.

--
Bien amicordialement,
P. Bastard

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

'////////////////////////////////////////////
Private Sub TextBoxSaisieC5_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBoxSaisieC5.Value) <> 28 Then
TextBoxSaisieC5.BackColor = RGB(255, 0, 0) 'rouge
ErreurDesti
MsgBox "Saisie non valide." & Chr(13) & _
"Sélectionnez toute la zone saisie et saisissez un code barre
valide" _
, vbCritical, "OSCAR... Erreur !"
Cancel = True
GoTo Fin
End If
Me.TextBoxSaisieC5.BackColor = &HC0FFFF 'normal
Me.TextBoxSaisieC5.SelStart = 0
Me.TextBoxSaisieC5.SelLength = Len(Me.TextBoxSaisieC5)
Fin:
End Sub
'////////////////////////////////////////////
Private Sub TextBoxSaisieC5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Cp
If Me.TextBoxSaisieC5.Value <> "" Then
Cp = Mid(TextBoxSaisieC5, 4, 5)
TextBoxIATA = Application.VLookup(CLng(Cp),
Sheets("AGENCE").Range("a2:b100"), 2, 0)
With Sheets("BaseLR")
.Activate
.Range("BO8") = Me.TextBoxIATA
End With
Dim LR
LR = Sheets("BaseLR").Range("bt9:bv20")
Me.ListBoxAutorisé.List = LR
Sheets("BaseLR").Range("BS7") = Me.ComboBoxLiaison
Me.TextBoxOk = Sheets("BaseLR").Range("BS6")
If Me.TextBoxOk.Value = "NON !" Then
Me.TextBoxOk.BackColor = RGB(255, 0, 0) 'rouge
ErreurDesti
MsgBox "Saisie non valide." & Chr(13) & "Le sac n'est pas prévu
sur cette liaison." _
& Chr(13) & "Vous pouvez :" & Chr(13) & " - Saisir un autre
sac" _
& Chr(13) & "- Cliquer sur une des liaisons autorisées",
vbCritical, "OSCAR... Erreur !"
Me.TextBoxOk.BackColor = &HC0FFFF 'normal
Else: Me.TextBoxOk.BackColor = &HFF00& 'Vert
End If
Else: Me.TextBoxSaisieC5.BackColor = RGB(255, 0, 0) 'rouge
End If
End Sub
'////////////////////////////////////////////
Private Sub TextBoxSaisieC5_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal x As
Single, ByVal y As Single)
If Len(TextBoxCaisse.Value) < 1 Then
TextBoxCaisse.BackColor = RGB(255, 0, 0) 'rouge
ErreurDesti
MsgBox "Saisie non valide" & Chr(13) _
& "Cliquez dans la zone Caisse et entrez un numéro de caisse
valide.", vbCritical, "OSCAR... Erreur !"
End If
Me.TextBoxCaisse.BackColor = &HC0FFFF 'normal
End Sub
'////////////////////////////////////////////
Private Sub TextBoxSaisiePlomb_Change()
Dim LR
If Len(TextBoxSaisiePlomb) = 11 Then
InsereUneLigne 'recopie les valeurs saisies sur la ligne insérée
ActiveCell = Me.TextBoxDate & " - " & Me.TextBoxHeure
ActiveCell.Offset(0, 1) = Me.ComboBoxLiaison
ActiveCell.Offset(0, 2) = Me.TextBoxCaisse
ActiveCell.Offset(0, 3) = Me.TextBoxSaisieC5
ActiveCell.Offset(0, 4) = Me.TextBoxSaisiePlomb
Me.TextBoxSaisieC5 = ""
Me.TextBoxSaisiePlomb = ""
Me.TextBoxIATA = ""
LR = Sheets("BaseLR").Range("bw9:bz20")
Me.ListBoxAutorisé.List = LR
Me.TextBoxCompteur = [E4].Value
Me.TextBoxOk = ""
Me.TextBoxOk.BackColor = &HE0E0E0
InitTotalParLiaison
End If
End Sub
'////////////////////////////////////////////

1 réponse

Avatar
Patrick BASTARD
Bonjour à toutes et tous

Je pense avoir trouvé et rectifié l'erreur.
Je teste et si cela se confirme, je posterai la solution ici, au cas où ...

Merci à tous ceux qui ont pris la peine de chercher.

Bonne semaine et à bientôt,

--
Bien amicordialement,
P. Bastard

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