Formater saisie d'une plaque immatriculation [textbox]

Soyez le premier à donner votre avis sur cette source.

Vue 13 502 fois - Téléchargée 730 fois

Description

pareil en plus effacement par touche effac arrière en cas erreur saisie

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
26
Date d'inscription
mardi 22 octobre 2002
Statut
Membre
Dernière intervention
14 mai 2006

Ok c'était tard désolé je vais mettre en
false c'est des mauvaises habitudes d'un autre langage
pour les problèmes des saisie c'est aussi pour ça que j'utilise le gotfocus, un tab: changement de zone, un tab arrière: on reviens sur la zone Immat (mise à blanc) et on recommence la saisie. Je sais que c'est loin d'être parfait, désolé mais j'en ai besoin et ça marche tout de même.
Merci pour les points de vue ça guide.
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
2 choses :
Je reviens sur la mise a zero. Econs ne t'as pas dit de la supprimer mais de remplacer TstFin 0 par TstFin False car c'est plus lisible.

Par contre a aucun moment tu ne tiens compte de la position du curseur (Text1.SelStart). Car si en cours de saisie je reviens en arriere et j'insere autre chose... aie aie aie.
Exemple : J'ai deja saisi "1243 X" et que je replace mon curseur entre le 2 et le 4 et que je resaisi qelque chose. Que va-t-il se passer ???
Messages postés
26
Date d'inscription
mardi 22 octobre 2002
Statut
Membre
Dernière intervention
14 mai 2006

Merci pour la compression
----> If Not K Like "[0-9a-zA-Z]" Then
pour
---> Utilise plutôt 'Sai' dans le If
aussi
La mise à zéro c'est parce que le textbox en question n'est pas seul et si on tabule vaut mieux la faire sinon ça marche plus
Pour la pile j'ai pas trouvé mieux pour l'instant, y a t il moyen de parer à cela??
Merci
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Effectivement, çà peut être raccourci :
Ceci par exemple, pour éviter " If

If Not K Like "[0-9a-zA-Z]" Then
KeyAscii = 0
End If

---------------------------------

Sai = Len(Text1.Text)
If Len(Text1.Text) <> 0 Then 'Pour le cas gotfocus ;-)

Tu recalcules deux fois la longueur de la chaine. Utilise plutôt 'Sai' dans le If

---------------------------------

# Private Sub Text1_gotFocus()
# Text1.Text = ""
# TstChf = 0
# TstLtt = 0
# TstFin = 0
# End Sub

Les trois variables mises à zéro sont des Booléens. Une mise à zéro est tout à fait correcte, mais il y a des débutants qui s'y perdront. Mets plutôt les variables à 'False', on y verra plus clair.

-------------------------------


Private Sub Text1_Change()
Sai = Len(Text1.Text)

If Len(Text1.Text) <> 0 Then 'Pour le cas gotfocus ;-)
If TstFin = 0 Then ' Test chiffres Département
If TstLtt = 0 Then ' Test Lettres
If TstChf = 0 Then 'Test chiffres du début saisie
If Not IsNumeric(Text1) Then 'saisie d'un carac non num
Prov1 = Mid$(Text1.Text, 1, Sai - 1)
Prov = UCase(Mid$(Text1.Text, Sai, 1))
TstChf = 1 'On passe aux lettres
Text1.Text = Prov1 & " " & Prov <----------


-------------------------

Quand tu exécutes la ligne marquée d'une flèche, tu modifies le contenu de Text1.
Par conséquent, tu lèves l'evénement 'Change' de la Textbox. Du coup, tu re-rentres dans la procédure, tu repasses au même endroit, tu re-lèves l'evénement 'Change', ... et la valeur de Text1.Text gonfle ... gonfle ... jusqu'à faire exploser la pile.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.