Déclencher un timer apres la saisie d'un text [Résolu]

Signaler
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011
-
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011
-
Bonjour,

Je voudrais surveiller un textbox. Des que l'utilisateur a fini d'écrire j'analyse le contenu du textbox et ensuite je l'éfface.
Le problème c'est que je ne sais pas comment faire pour déclencher un évènement sur la dernière lettre pressée. En utilisant les évènements text1_change, text1_keydown, text1_keypres ou text1_keyup c'est la première lettre qui est détecté et pas la dernière.

6 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
20
Salut,

Private Sub Text1_Change()
    ' On arrête le précédent Timer
    Timer1.Enabled = False
    ' Et on le relance
    '   Peut-être est-il utile de refaire un Timer1.Value = 0  ici  ... sait plus et pas pu tester
    Timer1.Enabled = True
End Sub

Ainsi, dès que tu as tapé un lettre, le timer se met en route, et il est interrompu et réinitialisé dès que tu retapes une nouvelle lettre.

Ensuite :

Private Sub Timer1_Timer()
    If Timer1.Value = 2000 Then
       ' Au bout de 2 secondes d'inactivité,
       sValeurEntree = Text1.Text
       '  faire quelque chose ... avec ce texte
       ' et l'effacer
       Text1.Text = ""
    End If
End Sub

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, le problème est : comment savoir si la lettre pressée est la dernière ?Essaie avec les évènements LostFocus ou Validate en prenant right$(text1.text,1) qui te donnera la dernière lettre de la saisie dans text1.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
Fin de saisie : C'est quoi ? une longueur prévue d'avance ou quand l'utilisateur sort du control ?
Si c'est lngr fixe, suffit de compter : Len(monTextBox.Text)
Si c'est quand il sort du control, suffit de faire ton test dans l'évènement monTextBox_Validate

Première lettre, dernière lettre : Avec si peu d'explication, difficile de t'aider !

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

Non j'ai du mal m'expliquer...

En fait l'utilisateur ne fait qu'écrire dans le textbox. La longueur du texte est variable et il ne sort jamais du controle.
Il ne fait qu'écrire ce qu'il veux et lorsqu'il a fini il arrète d'écrire sans sortir du controle.
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Bonjour
Essaie ceci
Le caractère de fin de saisie est le retour chariot dans ce cas ( touche Enter du clavier). Il faut bien que l'on sache quand l'utilisateur a terminé sa frappe.

Private sub Texte_Keypress (Keyascii as Integer)

If Keyascii <> 13 then Exit sub
' déclenchement du timer : texte.text contient les caractères frappés au clavier

GRENIER Alain[8D]
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

Bonjour,


Merci Manu c'est exactement ça que je voulais faire.

                                                                                                              A plus