TEXTBOX EN NUMÉRIQUE

Utilisateur anonyme - 11 févr. 2012 à 12:55
320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014 - 11 janv. 2013 à 12:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54061-textbox-en-numerique

320C Messages postés 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 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és 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 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és 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 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és 61 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 28 mai 2012 1
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és 335 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 16 août 2023 1
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és 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 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és 93 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 15 janvier 2014
11 févr. 2012 à 23:17
Salut à tous!
Merci surtout pour vos remarques j'en tiens compte...
Utilisateur anonyme
11 févr. 2012 à 17:20
Oui... j'ai oublié, on peux faire aussi:
If keyascii <> 8 and InStr(1, ChrsAutorisés, Chr(KeyAscii)) = 0 Then
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
11 févr. 2012 à 14:42
Bonjour acive,

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
Utilisateur anonyme
11 févr. 2012 à 12:55
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
Rejoignez-nous