Thalyee
Messages postés26Date d'inscriptionmardi 22 octobre 2002StatutMembreDernière intervention14 mai 2006 6 déc. 2005 à 15:12
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.
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 6 déc. 2005 à 10:42
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 ???
Thalyee
Messages postés26Date d'inscriptionmardi 22 octobre 2002StatutMembreDernière intervention14 mai 2006 5 déc. 2005 à 23:29
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
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 5 déc. 2005 à 22:15
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.
6 déc. 2005 à 15:12
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.
6 déc. 2005 à 10:42
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 ???
5 déc. 2005 à 23:29
----> 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
5 déc. 2005 à 22:15
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.