Comment passer au TextBox suivant après une saisie en VBA [Résolu]

Cassivellaunos 23 Messages postés samedi 25 juillet 2009Date d'inscription 25 août 2010 Dernière intervention - 17 août 2010 à 10:11 - Dernière réponse : Cassivellaunos 23 Messages postés samedi 25 juillet 2009Date d'inscription 25 août 2010 Dernière intervention
- 17 août 2010 à 18:35
Bonjour à tous,

Je suis en train de me créer un UserForm en VBA (je pense que je suis dans le bon thème... )dans lequel j'ai placé - entre autres - un TexBox.
Je voudrai limiter la saisie à 5 caractères (code postal) et faire en sorte qu'à la fin du cinquième caractère le curseur se positionne dans le TextBox suivant.
Je vous remercie de me préciser comment limiter une saisie à 5 caract. et comment paser au textBox suivant.

Cassivellaunos
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 17 août 2010 à 10:53
1
Merci
Salut

Comme ta TextBox ne doit accueillir que 5 caractères, tu auras mis le chiffre 5 dans la propriété MaxLength afin que le composant gère lui-même la longueur de saisie.

Pour passer au composant suivant, il "suffit" de faire une Tabulation.
Je te propose :
Private Sub TextBox1_Change()
    If Len(TextBox1.Text) = TextBox1.MaxLength Then
        SendKeys "{TAB}", True
    End If
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 17 août 2010 à 10:57
0
Merci
PS : Il faut gérer proprement l'ordre des composants.
Chaque composant à une propriété TabIndex (de 0 à x) qui définit cet ordre.
Sous VBA, c'est encore plus simple :
En mode configuration, tu fais un clic-droit sur ta forme (sur l'objet accueillant les composants, donc éventuellement une Frame) et dans le menu contextuel qui apparait, il y a "Ordre de tabulation".
Le petite fenêtre te listera tous les composants concernés et il te suffira de les monter ou descendre pour les mettre dans l'ordre de saisie désiré.
Commenter la réponse de cs_Jack
lmlmike 22 Messages postés mardi 17 août 2010Date d'inscription 4 juin 2016 Dernière intervention - 17 août 2010 à 13:19
0
Merci
Salut,

En complément de réponse, tu peux également forcer le "focus", c'est à dire le pointage du curseur sur le prochain formulaire de cette manière (remplace les noms en gras par tes propres variables):

Private Sub Textbox1_Change()

If Len(Textbox1.Text) = 5 Then
Textbox2.SetFocus
End If

End Sub

1°) Textbox 1 est le nom de la textbox de ton code postal
2°) textbox 2 est le nom de ta prochaine textbox dans lequel tu veux que le curseur soit.

Bon courage !
Commenter la réponse de lmlmike
Cassivellaunos 23 Messages postés samedi 25 juillet 2009Date d'inscription 25 août 2010 Dernière intervention - 17 août 2010 à 16:57
0
Merci
... et Zou !!! 3 réponses dans la journée !

Merci à toi Jack pour tes 2 réponses et la manière de résoudre mon problème par une {TAB}

Merci également à toi lmlmile pour ton autre façon de faire. Je ne maitrise pas les focus alors je vais tester.

Je m'y mets et vous tiens au courant.

Cassivellaunos
Commenter la réponse de Cassivellaunos
Cassivellaunos 23 Messages postés samedi 25 juillet 2009Date d'inscription 25 août 2010 Dernière intervention - 17 août 2010 à 17:11
0
Merci
Cool !
Les 2 codes marchent ! Ca je m'en doutais un peu c'est plutôt ma pomme que je mettais en doute...
Encore 2 X 1 code à mettre dans mon Dico perso. Comme j'ai une bonne trentaine de xxxxList à mettre dans mon formulaire je les panacher !
Mon UserForm avance doucement mais sûrement.
Merci à vous deux.


Cassivellaunos
Commenter la réponse de Cassivellaunos
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 17 août 2010 à 17:26
0
Merci
Les deux problèmes du Focus :
- Il faut que l'objet auquel on veut passer le focus soit visible, sinon, erreur 2104, de mémoire
- Il faut connaître le nom de l'objet suivant, donc il faut personnaliser chaque code en fonction de l'objet = pas vraiment pratique.

Vala
Commenter la réponse de cs_Jack
Cassivellaunos 23 Messages postés samedi 25 juillet 2009Date d'inscription 25 août 2010 Dernière intervention - 17 août 2010 à 18:35
0
Merci
J'avais bien compris ta seconde remarque dans la mesure ou le focus oblige d'indiquer le nom de l'objet sur lequel le curseur doit se placer mais je n'avais pas pensé que si l'objet n'était pas visible (!) j'obtiendrais une erreur 2104 !!!
Dans le cas où on utilise une tabulation on a effectivement qu'à savoir quel est l'objet sur lequel on désire effectuer une tabulation. C'est plus souple mais il faut bien avoir à l'esprit que les TabIndex doivent être bien gérés et à jour...

Par contre j'apprécie beaucoup tous les conseils et toutes les propositions qui me sont données. Même si je débute en VBA depuis 4 jrs en auto formation et qu'à 60 balais c'est pas encore gagné ! lol

Re-merci Marc

Cassivellaunos
Commenter la réponse de Cassivellaunos

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.