Controler l'entrée des décimals dans un textbox en vb 2008 express [Résolu]

Signaler
Messages postés
14
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
3
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
8 avril 2010
-
Bonjour le forum.
Je viens de découvrir, VB 2008 express.
Et étant débutant en programation, je cale sur le contrôle de saisies dans un textBox.
En effet, j'aimerai limiter la saisie à 1 chiffre après la virgule dans un textBox . (c'est un calcul de kilomètrage)
exemple: la saisie doit etre 1000,1 et non 1000,11.
De plus cela serait magique si la saisie se met automatiquement au format "##,###,###.#" (99.999.999,9) dans le textBox.
Un grand merci d'avance, d'un nouveau passionné.
Fadan.

6 réponses

Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Voici un autre moyen de procéder :

(Note : Le code ci-dessous doit être mis dans l'évènement KeyPress de la TextBox)

If IsNumeric(TextBox1.Text) = True Then
' On teste si la valeur dans la TextBox1 est un nombre
     If CStr(CDbl(TextBox1.Text) - CInt(TextBox1.Text)).Length = 3 Then
          ' La valeur '3' a été choisi car elle obéit à la règle suivante : nombre de décimal max + 2
          ' On soustrait le nombre contenu dans TextBox1 par son entier
          ' On convertit le résultat en String
          ' Et on vérifie la longueur
          ' Voir exemple ci-dessous pour plus de détail

               If e.KeyChar <> "�8;" Then
                   ' On autorise le retour en arrière pour modifier la valeur
                   e.KeyChar = ""
                   ' Si on ne fait pas de retour en arrière
                   ' on change le dernier caractère rentré par rien du tout
               End If
               Exit Sub
     End If
End If

        ' Exemple :

        ' Nombre contenu dans TextBox1 : 10,5
        ' 10,5 - 10 = 0,5
        ' Conversion de 0,5 en string
        ' On vérifie la longueur (0,5 comporte 3 caractères)
        ' La condition " If CStr(CDbl(TextBox1.Text) - CInt(TextBox1.Text)).Length = 3 " est vraie
        ' Si on a pas appuyer sur la touche Retour en arrière pour effacer (verifié par la condition " If e.KeyChar <> "�8;" ")
        ' On remplace le caractère tapé par ""car on a 1 chiffre après la virgule

++

Fauve
Pensez : Réponse Acceptée 
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
Bonjour,

utilise le contrôle MaskedTextBox
pour ton format, c'est la propriété Mask que tu dois définir à Custom et entrer ton ##,###,###.#

a+
Messages postés
14
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
22 janvier 2009

Merci pour la réponse, mais... il y a toujour un mais.....
Car  avec le contrôle MaskedTextBox, même s'il est magique on est obligé de rentrer la totalité par exemple pour 1.234,5 on doit entrer 00.001.234,5
Encore un mais... Mais je pense que je vais suivre ton conseil car pour l'instant je fais juste un petit programme de 2 entrées et 1 affichage qui irons dans une basse pour ensuite récuperer. Pour apprendre comment cela se passe avant d'aller plus loin. Donc je reviendrai souvent sur se forum qui est génial.
Mais encore mille merci.
fadan.
Messages postés
14
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
22 janvier 2009

Bonjour,
Tout d'abord mille excuses pour le retard, et merci pour la reponse.
Je teste cela et j'en reviendrais
Merci
A+, fadan
Messages postés
3
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
8 avril 2010

salut je voulais bien avoir le code du entrer ,si je clic sur entrer le code du bouton sera exécuté a savoir que j'utilise vb2008
Messages postés
3
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
8 avril 2010

veuillez me contactez par adresse email svp