Evenement textbox_change : effacer caractère

bonjour

svp c'st quoi le code que je dois mettre dans l'évènement textbox_change pour formuler ceci : "si j'efface un seul caractère de ma textbox" then ......

if Len(textboc.text)< ne pourra pas marcher parce que la longueur de valeur saisie sur la textbox n'est pas fixe elle peut changer

merci d'avance

Bonjour,

Un peu de détail sur ce que tu souhaites faire ne serait pas de trop.

Textbox change alors çà change tout le temps dès que le premier caractère est saisie le code ce lance,

idem 2ème caractère et ainsi de suite.

il faudrait compter le nombre de caractère à chaque fois que textbox change et stocker le chiffre obtenu

pour savoir si dans la prochaine fois que la textbox change c'est un caractère de plus ou de moins. …

Le but final il est ou ? un texbox afterupdate ne serait pas plus pratique pour vérifier le contenu quand tu quittes cette textbox ?

bonjour

svp c'st quoi le code que je dois mettre dans l'évènement textbox_change pour formuler ceci : "si j'efface un seul caractère de ma textbox" then ......

if Len(textboc.text)< ne pourra pas marcher parce que la longueur de valeur saisie sur la textbox n'est pas fixe elle peut changer

merci d'avance

Bonjour,

Il faudrait travailler sur une variable compteur située hors de la macro, ce qui permet de conserver sa valeur à l'issue de l’exécution de la macro. Exemple :

Dim NbCar As Integer
Sub Textbox1_Change()

NbCar=Application.Max(Len(Textbox1.Value), NbCar)
If Len(Textbox1.Value) < NbCar Then
    NbCar = 0 'Réinitialise la variable
    'Autres instructions
End If

End Sub

Merci Xmenpl

effectivement qu'est ce que je dois mettre dans le code pour compter le nombre de caractère à chaque fois que textbox change et le stocker

texbox afterupdate ne serait pas pratique parce que je quitte pas la textbox

Merci Xmenpl

effectivement qu'est ce que je dois mettre dans le code pour compter le nombre de caractère à chaque fois que textbox change et le stocker

Je vous invite à lire la réponse précédente...

Je vous invite à lire la réponse précédente...

Oui du coup c'est Pédro qui a la bonne réponse. Donc c'est à lui qu'on dit merci

Avec la variable à l'exterieur du Sub.

Dim NBCAR As Integer

Private Sub TextBox1_Change()
NBCAR = Application.Max(Len(TextBox1.Value), NBCAR)
If Len(TextBox1.Value) < NBCAR Then
MsgBox ("VOUS AVEZ RETIRE UN CARACTERE") ' ou ce que vous souhaitiez faire dans ce cas ?
End If
End Sub

Toooop merci bcp pedro et Xmenpl ca marche à merveille. c'est exactement ce que je cherchai

Je vous invite à lire la réponse précédente...

Oui du coup c'est Pédro qui a la bonne réponse. Donc c'est à lui qu'on dit merci

Avec la variable à l'exterieur du Sub.

Dim NBCAR As Integer

Private Sub TextBox1_Change()
NBCAR = Application.Max(Len(TextBox1.Value), NBCAR)
If Len(TextBox1.Value) < NBCAR Then
MsgBox ("VOUS AVEZ RETIRE UN CARACTERE") ' ou ce que vous souhaitiez faire dans ce cas ?
End If
End Sub

Re Xmenpl !

Il faut penser à réinitialiser la variable quand le cas de figure se présente, au risque d'avoir des erreurs.

Exemple :

  • Je supprime 2 caractères (j'ai donc 2 fois le msg "VOUS AVEZ RETIRE UN CARACTERE") --> Ok
  • J'ajoute maintenant un caractère, et le msg s'affiche quand même --> Pas Ok !

Toooop merci bcp pedro et Xmenpl ca marche à merveille. c'est exactement ce que je cherchai

Merci du retour, pense à valider le sujet !

l'instruction n'est pas un msgbox donc ca va

l'instruction n'est pas un msgbox donc ca va

Comme tu n'as pas souhaité nous informer de la finalité de cette action ( secret défense ) lol

A toi de voir si tu auras besoin de remettre le compteur à zéro.

NbCar = 0 'Réinitialise la variable ' avant de lancer ton instruction

j'avoue que je reste curieux de but obtenu

l'instruction n'est pas un msgbox donc ca va

Comme tu n'as pas souhaité nous informer de la finalité de cette action ( secret défense ) lol

A toi de voir si tu auras besoin de remettre le compteur à zéro.

NbCar = 0 'Réinitialise la variable ' avant de lancer ton instruction

j'avoue que je reste curieux de but obtenu

Bonjour tout le monde !

Après réflexion, ce serait plutôt :

NbCar = Len(TextBox1.Value) 'Réinitialise la variable

Bonjour tout le monde,

Une autre solution, car je n'aime pas les variables hors procédures (si on peut s'en passer).

J'ai toujours peur qu'elles s'égarent...

L'utilisation d'une variable Static résout pas mal de souci, dans ce cas.

Private Sub TextBox1_Change()
Static tLen As Integer 'variable Static : durée de vie = durée d'affichage de l'UserForm
    If Len(TextBox1.Text) < tLen Then 'Si caractère supprimé
        MsgBox "Tu as effacé un caractère : " & tLen & " ==> " & Len(TextBox1.Text)
    End If
    tLen = Len(TextBox1.Text) 'initialisé à chaque changement
End Sub
Rechercher des sujets similaires à "evenement textbox change effacer caractere"