Textbox - Longueur et focus

D

DKS

Guest
Bonjour à tous,

Voici mon probleme:

Dans un Userform j'ai 2 textbox dont le maxlength est defini sur 2.
Je voudrai que lorsque l'un est rempli, on passe tout seul au second puis à un bouton de validation.

Mon autre probleme c'est que ces textbox doivent avoir forcement 2 caractères. Donc si l'utilisateur change de textbox 'en manuel' apres avoir entré juste un caractere, il faudrai corrigé.

j'ai essayé:

if textbox.length=1 then textbox1.value='0' & textbox1.value

mais ça n'a pas l'air de marcher

En vous remerciant d'avance.
 

Bricofire

XLDnaute Impliqué
Bonsoir DKS,

Si tu veux Obligatoirement 2 caractères dans ton premier TxtB, pourquoi ne pas faire un test de validation avec un If Then effectivement, associé ,pour le confort, à une MsgBox qui dit à l'utilisateur ce qui cloche & ce qu'il faut faire, et qui anuule l'entrée pour rester en saisie sur TxtB1, en plus tu peux du coup filtrer aussi la teneur de la réponse en fonction de tes désidératas (euh y a des accents là ?) .
Tu peux piloter facilement la chose avec l'évènementiel Sub CdeButton_Enter par exemple qui se déclenche quand tu valides ton (bouton) euh texbox, le principer est le même.
Mieux peut-être (vois surement), passer par l'évènement Before Update qui tient compte du passage de focus, pour les détails, voir aide vba, Textbox,clique sur évènements et tu as la liste !

Si c'est ce que tu veux, et que tu n'y arrives pas détailles bien ta demande, tu auras ce que tu veux :)

A+
Bfr

Message édité par: bricofire, à: 23/09/2005 19:01
 
D

DKS

Guest
Bonsoir BFR

Effectivement, je fonctionnerai comme ça si je ne trouve pas d'autre solution, mais il me paraissait plus confortable pour l'utilisateur de ne pas avoir à se poser de question... s'il veut entrer '1', qu'il le fasse et que ça soit à mon USF de le transformer en '01'. Ca doit bien etre fesable ?!

Sinon je vois pas bien la difference entre CdeButton_Enter et CdeButton_Clic ?

Sinon connais-tu les commandes pour donner le focus à un control donné ?

Merci ;)
 

Bricofire

XLDnaute Impliqué
Re DKS,

Ben Le textBox ne possède pas, je crois, d'évènement click (double OK) les boutons c'est plus subtil, ça joue sur les hiérarchies de priorité et principalement, si tu tapes sur la touche entrée, c'est le bouton qui a le focus qui réagit par défaut, alors que si tu cliques, c'est celui qui est visé qui réagit, ce qui est fondamental. Dans le cas ou c'est lui qui a le focus, on peut penser que ça revient au même.

Sinon pour quelqu'un qui ne connaît pas ta pensée; Ce que tu veux faire, si tu lis ton premier post et le second, dans le deuxième on voit que si la personne rentre un seul caractère, tu veux ajouter un zéro devant (pas très compliqué effectivement), mais du coup on peut supposer que tu parles de réponses avec des chiffres seulement ? ce n'est pas explicite dans le post N°1, ou sinon on met '0A' par exemple ?. Aux gens qui te répondent d'essayer de se mettre en phase avec toi pour ne pas parler 'béta' ou 'japonais' selon le niveau détecté, mais à toi de leur dire exactement ce que tu cherches (c'est clair dans ta tête), car sinon on tombe sur des fils à rallonges !

Je te répondrai sû dans le WE, ( ou la nuit), si pas d'autres réponses à ta demande détaillée, mais je vais bientôt aller dîner, puis film etc... ;)

à +

Bfr
 
D

DKS

Guest
Effectivement, mm si c'est clair dans ma tete, ça n'est pas toujours tres clair qd ça en sort... :p

En tout cas, merci à tous les deux, c'est cool d'avoir repondu si vite.
La reponse d'Eric fonctionne impec' :woohoo:

Bonne soirée film, BFR, moi je vais retourner à mon projet...

Si tu as l'occasion de me dire comment faire pour les histoires de 'focus' tout serai parfait.

;)
 

Ti_

Nous a quitté
Repose en paix
Les textbox possèdent une propriété Autotab qui fait ça automatiquement. Ainsi, si l'utilisateur a saisi 2 caractères dans un textbox limité à 2 et que son autotab est à True, le focus se déplacera de lui-même sur le controle suivant. Maintenant s'il passe au contrôle suivant avant que 2 caractères aient été saisis, tu peux utiliser la fonction Format (mais en fait il est inutile à ce moment de tester la longueur du texte, comme le fait Eric C)

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Text = Format(TextBox1.Text, '00')
End Sub
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir DKS, Bricofire, Eric C,

Si j'ai bien compris, ci-joint un exemple qui pourrait peut-être répondre à ta demande DKS...

J'ai tout d'abord utilisé les propriétés AutoTab et MaxLength des Textbox. Ensuite je me sers de l'évènement KeyPress pour contrôler la saisie de l'utilisateur, et de l'évènement Exit pour reformater cette saisie...

Cordialement, [file name=mDF_TxtBoxLongeurEtFocus.zip size=14569]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/mDF_TxtBoxLongeurEtFocus.zip[/file]
 

Pièces jointes

  • mDF_TxtBoxLongeurEtFocus.zip
    14.2 KB · Affichages: 100

myDearFriend!

XLDnaute Barbatruc
Bonsoir DKS, Bricofire, Eric C,

Si j'ai bien compris, ci-joint un exemple qui pourrait peut-être répondre à ta demande DKS...

J'ai tout d'abord utilisé les propriétés AutoTab et MaxLength des Textbox. Ensuite je me sers de l'évènement KeyPress pour contrôler la saisie de l'utilisateur, et de l'évènement Exit pour reformater cette saisie...

Cordialement, [file name=mDF_TxtBoxLongeurEtFocus_20050923201048.zip size=14569]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/mDF_TxtBoxLongeurEtFocus_20050923201048.zip[/file]
 

Pièces jointes

  • mDF_TxtBoxLongeurEtFocus_20050923201048.zip
    14.2 KB · Affichages: 94
D

DKS

Guest
Bonjour,

Desolé d'avoir tant de tps à repondre mais ma 'vie sociale' avait un peu repris le dessus....

J'ai trouvé tout ce dont j'avais besoin dans vos reponse, et meme un peu plus ! :woohoo:

Alors je vous dis un grand merci à tous !!!
 

Statistiques des forums

Discussions
312 400
Messages
2 088 082
Membres
103 710
dernier inscrit
amin Saadaoui