Comment s'assurer du format décimal d'un textbox?

js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 21 janv. 2011 à 04:40
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 23 janv. 2011 à 09:56
Bonjour à tous,

j'ai un champ txtremise et je souhaiterai m'assurer que son format est de deux chiffres avant la virgule et de deux chiffres après la virgule et qu'un utilisateur malin ne puisse pas y insérer deux virgules s'il vous plaît.

Je vous remercie d'avance pour votre très précieuse aide.

Cordialement.

8 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 janv. 2011 à 08:09
Bonjour,
En VB.Net:
 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If Not IsNumeric(TextBox1.Text) Then
            MessageBox.Show("Vous devez entrer une valeur numérique dans ce champ.", "Essai", MessageBoxButtons.OK, MessageBoxIcon.Error)
            TextBox1.Text = ""
            TextBox1.Focus()
            Exit Sub
        End If
        TextBox1.Text = Format(TextBox1.Text, "Fixed")
    End Sub

Tu sélectionnes Format et tu cliques sur F1 et tu auras toutes les explications sur Format

@+Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 janv. 2011 à 08:17
Désolé, je viens de m'apercevoir que c'est du VB6 que tu cherches.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
21 janv. 2011 à 14:07
Bonjour,

Pour t'assurer que la valeur saisi est bien numérique:

va((textBox.text) <> 0 (pour tenir compte des valeurs négatives. Par contre méfie-toi (teste pour cela), mais je crois qu'il faudra un point et non une virgule.

Sinon tu peux tester la longueur avec Split(TextBox.text,",") qui te renvoie un tableau de deux éléments.


Calade
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 janv. 2011 à 21:48
non... val ne prend que la partie entière

pour ce cas précis le plus adéquat est sans doute juste d'utiliser un maskedit (Microsoft Masked Edit Controls 6.0) avec pour propriété Mask à "##.##"

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
23 janv. 2011 à 08:42
@PCPT, si tu mets un point et non une virgule, un Val() récupère bien tout (je viens de vérifier).

Calade
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 janv. 2011 à 09:23
exact Calade, j'ai dû confondre avec le séparateur de milliers 'espace' peut-être?...
(j'étais pourtant sûr.. ^^)

merci de ta vérification

et il faut en effet un point, indépendamment des paramètres régionaux

[quote=MDSN]
Note
La fonction Val ne reconnaît que le point comme séparateur décimal (.). Lors de l'utilisation d'autres séparateurs décimaux (applications internationales, par exemple), convertissez la chaîne en nombre à l'aide de la fonction CDbl.
/quote


++
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
23 janv. 2011 à 09:28
@PCPT, en fait la traduction s'arrête là. Des trucs comme ça n'ont pas été localisés c'est pourquoi je travaille toujours avec le Point comme séparateur décimal. Même dans Excel on évite les problèmes.

Quant au séparateur de milliers, là je n'ai pas vérifié mais c'est certainement vrai car sa présence ou non ne modifie pas la "valeur", simplement sa lisibilité.


Calade
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 janv. 2011 à 09:56
ce qui n'est pas une bonne chose non plus...

j'ai la virgule en séparateur décimal
MsgBox CStr(CDbl("10.15")) => erreur 13

mais on s'écarte du sujet
le maskedit comme indiqué est approprié pour les valeurs positives
sinon il faut tester le code ascii à chaque keypress

nb : pour obtenir le séparateur, API GetLocaleInfo et GetUserDefaultLCID

++
0
Rejoignez-nous