320C
Messages postés93Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention15 janvier 2014 11 janv. 2013 à 12:53
Vos Remarque et vos analyses m'ont été très bénéfiques
ACIVE, CHEYENNE, RENFIELD, GALACTUS13,
Merci à tous !
320C
Messages postés93Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention15 janvier 2014 11 janv. 2013 à 12:48
Vos Remarque et vos analyses m'ont été très bénéfiques
ACIVE, CHEYENNE, RENFIELD, GALACTUS13,
Merci à tous !
320C
Messages postés93Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention15 janvier 2014 11 janv. 2013 à 12:35
Vos Remarque et vos analyses m'ont été très bénéfiques
ACIVE, CHEYENNE, RENFIELD, GALACTUS13,
bitshifter
Messages postés61Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention28 mai 20121 13 févr. 2012 à 20:17
Coté irritant pour l'utilisateur, je remplacerai le MsgBox par un simple Beep.
Mais ça, c'est juste moi...
Galactus13
Messages postés335Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention16 août 20231 13 févr. 2012 à 18:50
Voilà une solution très simple !
Private Sub TxtNom_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyBack Then Exit Sub ' retour chariot
If Not Chr(KeyAscii) Like "[0123456789.]" Then KeyAscii = 0
End sub
Et voilà une gestion complète et simple,
On peut remplacer le "." par ",", dans ce cas, ceul les chiffres et la virgule seront accepté !
dheroux
Messages postés52Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention11 juin 2014 12 févr. 2012 à 06:54
Bonjour,
Pourquoi ne pas faire appel à un MaskedBox au lieu d'un TextBox ?
Tout serait beaucoup plus simple dans ce cas, puisqu'on maitrise la saisie des caractères.
Bonne journée.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 févr. 2012 à 04:45
On ne verifie pas la saisie dans le _Change...
c'est moins pire que le Keypress, c'est sur, m'enfin...
pourquoi pas le KeyPress ?
a cause du presse-papier, qui reste une faille béante. et de l'inconfort
mon parti pris ?
le style ES_NUMBER appliqué au controle, avec un controle du contenu, malgré tout, du fait du presse-papier qui permet de passer outre la limitation en terme de contenu
utiliser le _Validate de nos controles. (ou a defaut le LostFocus)
laisser la saisie libre et la controler au sortir du controle.
ca permet a l'utilisateur de ne pas être géné lors de la saisie ; ca réduit le code qui tend vers une usine à gaz ; surtout si appliqué a n controles.
320C
Messages postés93Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention15 janvier 2014 11 févr. 2012 à 23:20
Mais je voudrais aussi ajouter que ceci est faite juste pour autorisé la saisie de chiffre donc pas de lettre mais je tiens aussi compte de vos remarque qui me sont très utiles...
Merci Acive et
Merci Cheyenne
Bon Week end
320C
Messages postés93Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention15 janvier 2014 11 févr. 2012 à 23:17
Salut à tous!
Merci surtout pour vos remarques j'en tiens compte...
Salut,
Déjà pour ton bout de code tu n'avais pas besoin de faire un zip (surtout en double).
Observations:
1) de la façon que tu le fais, si l'utilisateur a tapé une série de chiffres et en suite une lettre, il doit tout recommencer depuis le début car tu fais Text1.Text = "".
2)Si l'utilisateur a la nécessité d'un chiffre avec des décimales, il ne peux pas le taper (uniquement des chiffres entiers).
Je l'aurais fait plutôt comme ça:
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim ChrsAutorisés As String
ChrsAutorisés = "0123456789.,€"
If InStr(1, ChrsAutorisés, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
MsgBox "Ce caractère n'est pas autorisé"
End If
End Sub
11 janv. 2013 à 12:53
ACIVE, CHEYENNE, RENFIELD, GALACTUS13,
Merci à tous !
11 janv. 2013 à 12:48
ACIVE, CHEYENNE, RENFIELD, GALACTUS13,
Merci à tous !
11 janv. 2013 à 12:35
ACIVE, CHEYENNE, RENFIELD, GALACTUS13,
13 févr. 2012 à 20:17
Mais ça, c'est juste moi...
13 févr. 2012 à 18:50
Private Sub TxtNom_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyBack Then Exit Sub ' retour chariot
If Not Chr(KeyAscii) Like "[0123456789.]" Then KeyAscii = 0
End sub
Et voilà une gestion complète et simple,
On peut remplacer le "." par ",", dans ce cas, ceul les chiffres et la virgule seront accepté !
12 févr. 2012 à 06:54
Pourquoi ne pas faire appel à un MaskedBox au lieu d'un TextBox ?
Tout serait beaucoup plus simple dans ce cas, puisqu'on maitrise la saisie des caractères.
Bonne journée.
12 févr. 2012 à 04:45
c'est moins pire que le Keypress, c'est sur, m'enfin...
pourquoi pas le KeyPress ?
a cause du presse-papier, qui reste une faille béante. et de l'inconfort
mon parti pris ?
le style ES_NUMBER appliqué au controle, avec un controle du contenu, malgré tout, du fait du presse-papier qui permet de passer outre la limitation en terme de contenu
utiliser le _Validate de nos controles. (ou a defaut le LostFocus)
laisser la saisie libre et la controler au sortir du controle.
ca permet a l'utilisateur de ne pas être géné lors de la saisie ; ca réduit le code qui tend vers une usine à gaz ; surtout si appliqué a n controles.
11 févr. 2012 à 23:20
Merci Acive et
Merci Cheyenne
Bon Week end
11 févr. 2012 à 23:17
Merci surtout pour vos remarques j'en tiens compte...
11 févr. 2012 à 17:20
If keyascii <> 8 and InStr(1, ChrsAutorisés, Chr(KeyAscii)) = 0 Then
11 févr. 2012 à 14:42
Ben oui, on en revient à une discussion précédente.
Il faudrait aussi penser à la possibilité d'enter une valeur négative et par commodité, pour une éventuelle correction, j'ajouterais vbKeyBack.
ChrsAutorisés = "0123456789-.,€" & vbKeyBack
Plus un test afin de ne pas inscrire deux fois les caractères permis autres que les chiffres.
Quant au MsgBox.... enfin, si cela lui fait plaisir !
Bon week-end à toi,
Cheyenne
11 févr. 2012 à 12:55
Déjà pour ton bout de code tu n'avais pas besoin de faire un zip (surtout en double).
Observations:
1) de la façon que tu le fais, si l'utilisateur a tapé une série de chiffres et en suite une lettre, il doit tout recommencer depuis le début car tu fais Text1.Text = "".
2)Si l'utilisateur a la nécessité d'un chiffre avec des décimales, il ne peux pas le taper (uniquement des chiffres entiers).
Je l'aurais fait plutôt comme ça:
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim ChrsAutorisés As String
ChrsAutorisés = "0123456789.,€"
If InStr(1, ChrsAutorisés, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
MsgBox "Ce caractère n'est pas autorisé"
End If
End Sub