[VB.NET] NUMERIXBOX - UNE TEXTBOX NUMÉRIQUE QUI GÈRE LES DÉCIMALES ET LES ARROND

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 4 sept. 2007 à 09:27
jedry Messages postés 19 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 10 avril 2011 - 23 mars 2011 à 15:33
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/43936-vb-net-numerixbox-une-textbox-numerique-qui-gere-les-decimales-et-les-arrondis

jedry Messages postés 19 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 10 avril 2011
23 mars 2011 à 15:33
Et j'ajoute MERCI que j'avais oublié.
jedry Messages postés 19 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 10 avril 2011
23 mars 2011 à 15:32
Je suis débutant niveau "paquerettes", je découvre après 3 jours de recherches et de tâtonnements. Je n'ai qu'un mot à dire FABULEUX !
cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013
2 mars 2011 à 10:55
lorsque j'utilise le point, ca bug

exemple 19.45

il me met 1.945,00
TeDeum Messages postés 21 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 8 janvier 2008 1
8 janv. 2008 à 11:46
Salut,

Voilà une source super intéressante !!
Merci à toi ...

De mon coté j'ai ajouté deux petite chose qui me semble intéressante et je te les soumets :
1) Afin de permettre la saisie d'un entier uniquement (et pour éviter que l'utilisateur ne saisissent un décimal), j'ai ajouté le test de Decimals dans le KeyPress :
Avant : If Char.IsPunctuation(e.KeyChar) And InStr(Text, DecimalSeparator) > 0 Then e.Handled = TrueApres : If Char.IsPunctuation(e.KeyChar) And (InStr(Text, DecimalSeparator) > 0 Or Me.Decimals 0) Then e.Handled True
2) Afin de prendre en compte les systèmes ayant le . comme séparateur décimal (Il y en a), j'ai modifié la procédure ReplaceSeparateurDecimal par :
Select Case DecimalSeparator
Case "." : Text = Replace(Text, ",", DecimalSeparator)
Case "," : Text = Replace(Text, ".", DecimalSeparator)
End Select

Voilà, dans tous les cas merci encore, c'est pratique, utile et éfficace !!
cs_chris81 Messages postés 589 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 29 avril 2008 2
7 sept. 2007 à 20:40
oui tu as raison c'etait juste des questions j'ai pas testé :)
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
7 sept. 2007 à 16:01
Chris81:
bon j'ai testé ce que tu m'as dit,
1 pour arrondir le plus simple est d'utiliser round ou format
2 oui on peut effacer avec del avec suppr avec ctrl+x ... je ne comprends pas ta remarque
3 la fonction Trim enlève les espaces a droite et gauche et non au milieu comme désiré ici.
4 on ne peut frapper qu'une seule ponctuation cf dans Private Sub NumericBox_KeyPress
[..]
' une seule ponctuation
If e.KeyChar.IsPunctuation(e.KeyChar) And InStr(Text, DecimalSeparator) > 0 Then e.Handled = True
End Sub

j'ai l'impression que tu as lu en détail mais pas franchement tester non ?


++
cs_chris81 Messages postés 589 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 29 avril 2008 2
5 sept. 2007 à 16:45
re, de plus pour enlever les espaces utilise la fonction TRIM contenu dans la classe string. Il te manque une verif: savoir si le gars tape 12.3.5
a+
cs_chris81 Messages postés 589 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 29 avril 2008 2
5 sept. 2007 à 16:42
salut,
le plus simple pour arrondir est d'utiliser la surcharge du tostring, monDouble.toString("N2") ou N3....
De plus as tu essayé d'effacer un chiffre avec le bouton retour (au dessus de enter) pour voir le comportement ?
Sinon bon travail a+
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
4 sept. 2007 à 12:05
d'ailleurs le plus simple pour t'en convaincre c'est d'ouvrir un projet et de poser les 2 dessus et de comparer ;)
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
4 sept. 2007 à 12:03
:D

par rapport au NumericUpDown:

les plus:

ressemble à une TextBox (y a pas l'assenceur pourri à droite)
a une proprieté .Text pour l'affichage et se comporte comme une textbox (events...) dont il hérite
on peut taper UN "." sur le pavé numérique qu'il transforme en ","
les arrondis sont gérés directement.
assure qu'un texte rentré est toujours numérique.


les moins:

ne gère pas les hexadécimaux (en même temps bon hein ...)
n'a pas de maximum et de minimum spécifié (peut être à rajouter pour un %age?)


en bref, a moins d'avoir des hexadécimaux à traiter, NumericUpDown est un peu plus chiant à utiliser.
Dans le cas courant (indices, monétaires, quantités ...) NumericBox s'intègre mieux au formulaire et est plus simple à utiliser.


en toute inobjectivité, voila :)


vbnouille, subjection votre honneur!
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 sept. 2007 à 09:27
Pas regardé le code, mais d'après la description je ne vois pas différence avec un NumericUpDown sauf que c'est moins complet !?
Rejoignez-nous