Desactiver la fonction len

Résolu
cs_lacourge Messages postés 21 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 mars 2007 - 22 avril 2005 à 23:17
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 23 avril 2005 à 01:34
bonjour, je suis débutant, voici mon pb : j'ai plusieurs textbox avec
passage auto du focus si elles ont le nombre de caractères.Ca marche
sauf qu'a chaque démarrage, mon focus se met n'importe ou suivant le
remplissage des textboxs. Je souhaiterai désactiver la fonction
len dans la partie Form_Activate

premier chargement

d'avance merci

a+

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 avril 2005 à 01:34
Re
Je comprends mieux

-1- Au lieu de mettre ton code dans Form_Activate, pourquoi ne pas le mettre dans Form_Load ? Il ne sera exécuté qu'une fois, au chargement de la forme. Mets simplement ceci dedans : txtDate(1).SetFocus

-2- Pour changer de TextBox quand la longueur du texte arrive à 5 : Pouah le SendKeys !
C'est pas propre.
Comme tu as indexé tes TexBox, il suffit de donner le focus au TextBox qui a l'index "Index + 1", c'est tout : TextBox(Index + 1).SetFocus
Il faudra juste penser à gérer le cas où tu te trouves sur le dernier TextBox (avec UBound(TextBox), tu peux connaitre le nombre d'index dans ta 'collection')

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)
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
22 avril 2005 à 23:36
tu ne peux pas désactiver une fonction de VB.

Il y a forcément une autre solution à ton problème ... que je ne comprends pas bien d'ailleurs.

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 avril 2005 à 00:03
Salut
Tu nous parle de particularité de ton code qu'on ne connait pas.
Va falloir donner un bout de code pour qu'on sache ce qu'il y a dans ton Form_Activate !
et ... expliquer un peu mieux ton problème, il peut, peut-être, se résoudre simplement par des propriétés ...

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)
0
cs_lacourge Messages postés 21 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 mars 2007
23 avril 2005 à 00:43
toutes mes excuses pour ce manque de clarté (c'est mon premier programme en vb)

voici une partie de mon code:

Public PremierChargement As Boolean



Private Sub Form_Activate()

Dim Index As Integer

If PremierChargement And txtDate(0) "" And txtDes(0) "" Then

txtDate(0).SetFocus

PremierChargement = False

End If

If PremierChargement And txtDate(0) <> "" And txtDes(0) <> "" And txtDes(1) = "" Then

txtDate(1).SetFocus

PremierChargement = False

End If

etc...

les utilisateurs écrivent dans les cases. A chaque lancement, le
programme va lire dans un fichier .dat, recopie dans les cases et les
utilisateurs peuvent continuer à remplir les cases suivantes (en fait,
juste pour cela, j'aurais du utiliser un tableau, après, il y a
d'autres fonctions...)

jusque là, au démarrage, mon focus se mettait au bon endroit sauf depuis que j'ai rajouté:

Private Sub txtDate_Change(Index As Integer)

If Len(txtDate(Index).Text) = 5 Then 'passage auto du focus à la case suivante

SendKeys "{Tab}"

End If

End Sub

suivant le nombre de caracteres dans les txtDate, il se met "plus loin"

voilà, j'espère avoir été plus précis, désolé d'avoir été un peu long

merci d'avoir répondu

a+
0
Rejoignez-nous