Desactiver la fonction len

[Résolu]
Signaler
Messages postés
21
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 mars 2007
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
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)
Messages postés
21
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 mars 2007

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+