Userform textbox change patiente le temps que le mot entier soit saisit

Bonjour,

Quand je rentre un mot dans mon text box activant une procédure change, la procédure s'exécute à chaque lettre rentrée (ce qui est normal)

J'aimerai que la procédure reconnaisse quand j'ai fini de saisir le mot et donc là à ce moment là elle s'exécute une seule fois, par exemple 2 secondes après la dernière modification (dernier caractère saisit) la procédure s'exécute car c'est que mon mot est saisit

Savez vous si c possible ? Si oui comment ? :)

Merci à tous

Bonjour,

Prenons un UserForm, dans lequel on dessine 2 TextBox : TextBox1 et TextBox2.

Le code de cet UserForm :

Option Explicit

Private Sub TextBox1_AfterUpdate()
Debug.Print "AfterUpdate", TextBox1.Value
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "BeforeUpdate", TextBox1.Value
End Sub

Private Sub TextBox1_Change()
Debug.Print "change", TextBox1.Value
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit", TextBox1.Value
End Sub

Le résultat, visible dans la fenêtre exécution (Affichage/fenêtre Exécution) :

change a

change az

change aze

change azer

change azert

change azerty

BeforeUpdate azerty

AfterUpdate azerty

Exit azerty

Tu vois donc que tu peux disposer de 3 procédures événementielles pour gérer ce que tu veux. S'il s'agit de tester le contenu du TextBox pour, éventuellement en bloquer la sortie (erreur de saisie), utilise l'événement BeforeUpdate qui dispose d'un paramètre "Cancel".

Exemple :

Empêche la sortie du TextBox1 si, dans celui-ci, n'est pas saisi le mot "azerty" :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = TextBox1.Value <> "azerty"
End Sub
Rechercher des sujets similaires à "userform textbox change patiente temps que mot entier soit saisit"