Comment utiliser TextBox1.Numeric = True ? [Résolu]

cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 6 avril 2007 à 13:50 - Dernière réponse : cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention
- 7 avril 2007 à 08:58
Bonjour,
Suite au forum
 http://www.vbfrance.com/infomsg_CALCUL-NUMERIQUE-AVEC-TEXBOX_915799.aspx
Comment on utilise cette fonction TextBox1.Numeric = True ?


Je l'ai trouvé dans l'aide mais je n'arrive pas à la faire fonctionner .
Ce que je veux faire c'est ce style d'opération:
Option strict on
((TextBox1.Text - TextBox2.Text) / TextBox3.Text) * 100
Je crois qu'il faut dire au TextBox que la saisie est numérique et non pas texte.



Private




Sub Page_Load(ByVal sender AsObject, ByVal e As EventArgs) HandlesMyBase.Load



Dim instance As TextBox





Dim value AsBoolean




value = instance.Numeric




instance.Numeric = value




TextBox1.Numeric = True





End



Sub

J'ai erreur :
Erreur 1 'Numeric' n'est pas un membre de 'System.Windows.Forms.TextBox'. C:\Documents and Settings\Mes documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 99 17 WindowsApplication1

Merci, bonne journée.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 6 avril 2007 à 20:01
3
Merci
Salut,

[Quote] :

Je l'ai trouvé dans l'aide mais je n'arrive pas à la faire fonctionner .
Ce que je veux faire c'est ce style d'opération:
Option strict on
((TextBox1.Text - TextBox2.Text) / TextBox3.Text) * 100
Je crois qu'il faut dire au TextBox que la saisie est numérique et non pas texte.

Si tu veux faire ce style d'opérations comme dans l'exemple que tu as utilisé ( voir [Quote] ), voici un petit exemple :

((CDec(TextBox1.Text) - CDec(TextBox2.Text)) / CDec(TextBox3.Text)) * 100

Tu peux ensuite stocker cà directement dans une variable :

Dim nombre As Decimal = ((CDec(TextBox1.Text) - CDec(TextBox2.Text)) / CDec(TextBox3.Text)) * 100

Ou alors le remettre dans une TextBox, comme ceci :

TextBox4.Text = CStr(((CDec(TextBox1.Text) - CDec(TextBox2.Text)) / CDec(TextBox3.Text)) * 100)

ou

TextBox4.Text = (((CDec(TextBox1.Text) - CDec(TextBox2.Text)) / CDec(TextBox3.Text)) * 100).ToString

ou encore

Dim nombre As Decimal = ((CDec(TextBox1.Text) - CDec(TextBox2.Text)) / CDec(TextBox3.Text)) * 100
TextBox4.Text nombre.ToString                    ou                       TextBox4.Text CStr(nombre)

---------------------------------------------------------------------
Ps 1 : Petites informations

CDec permet de convertir en Decimal
CStr permet de convertir en String
CInt permet de convertir en Integer

Pour plus d'infos, tu peux aller jeter un petit coup d'oeil à cette adresse : Cliques ici

Ps 2 : Si les nombres dans tes textbox sont plutôt des entiers que des nombres décimaux : utilises CInt au lieu de CDec

---------------------------------------------------------------------------------------------------------------------------
Si ce message a réglé ton problème >>>>>>> Accepter la réponse   

Merci cs_fauve 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de cs_fauve
Meilleure réponse
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 6 avril 2007 à 21:04
3
Merci
Salut,

il faut que tu gères si tes textbox contiennent quelque chose ou si elles sont vides. Pour cela, voici comment faire :

If TextBox1.Text <> "" And IsNumeric(TextBox1.Text) = True And TextBox2.Text <> "" And IsNumeric(TextBox2)= True Then
           TextBox3.Text = CStr((CDbl(TextBox2.Text) - CDbl(TextBox1.Text)) / CDbl(TextBox2.Text) * 100)
End If

' Pour qu'il calcule, il faut que TextBox1.Text contient une chaîne de caractères et que cette chaîne soit un nombre
'                        idem pour TextBox2.Text
' Sinon il ne calcule pas
'
' IsNumeric(TextBox1.Text) = True si TextBox1.Text contient un nombre (par exemple : 12    9,5    ...)
' IsNumeric(TextBox1.Text) = False si TextBox1.Text  ne contient pas un nombre (par exemple : azer     2xz3v     ...), ----

(Coloration syntaxique automatique par Kenji)

-----------------------------------------------------------------------------------------------------------

Si ce message a réglé ton problème >>>>>>> Accepter la réponse   

Merci cs_fauve 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de cs_fauve
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 6 avril 2007 à 14:01
0
Merci
Bonjour,
Le message d'erreur que tu obtiens est tout ce qu'il y a de normal. En effet la propriété Numeric existe mais sur les objets TextBox côté ASP.Net pour les applications sur périphériques mobiles.

Voir  http://msdn2.microsoft.com/fr-fr/library/system.web.ui.mobilecontrols.textbox.numeric(VS.80).aspx
 
++
Commenter la réponse de cs_Willi
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 6 avril 2007 à 14:04
0
Merci
J'ajoute que l'expression :
((TextBox1.Text - TextBox2.Text) / TextBox3.Text) * 100

me laisse un peu pantois !
Faire des opération d'addition et de soustraction ... et de divisons sur des valeurs de type "string" est assez étonnant, même si VB arrive à "deviner"
Commenter la réponse de jmfmarques
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 6 avril 2007 à 17:48
0
Merci
Quant à ton erreur, elle est normale.

TU essaye de lire ou d'écrire la propriété Numeric de "l'ojet" instance. Hors ton "objet" instance n'est créer nulle part (d'ou les ") ce n'est pas un objet existant.

Supprime le code présent dans le Page_Load et essaye avec ceci :

TextBox1.Numeric=True
TextBox2.Numeric=True
TextBox3.Numeric=True

Normalement ça doit suffire, tu n'as pas besoin du reste

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 6 avril 2007 à 20:51
0
Merci
Bonsoir,
Merci fauve pour toutes c'est explications.
Actuellement j'ai TextBox3.Text =

CStr((
CDbl(TextBox2.Text) -
CDbl(TextBox1.Text)) /
CDbl(TextBox2.Text) * 100)
Je viens de m'aperçevoir que l'erreur c'est :
Quand j'écris dans TextBox1.Text  les autres TextBox on rien dedans donc il y a une ligne d'erreur et quand j'ecris après dans  TextBox2.Text il n'y a pas d'erreur puis qu'il peut calculer. Quand je fais le contraire j'écris dans TextBox2 il y a une erreur et j'écris a nouveau dans TextBox1 pas d'erreur.
Je gére l'erreur comme ça :
On

Error
GoTo fin
TextBox3.Text = CStr
((
CDbl(TextBox2.Text) -
CDbl(TextBox1.Text)) /
CDbl(TextBox2.Text) * 100)fin:
Vous pensez que c'est comme ça qu'il faut faire pour gérer l'erreur ?
Pour le mode de calcul apparemment c'est comme ça.
Merci, bonne soirée.
Commenter la réponse de cs_Sipat
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 6 avril 2007 à 21:45
0
Merci
Bonsoir,
Oui ça fonctionne bien  sans
On Error
GoTo
fin

mais il reste encore une erreur quand j'efface retour arr là se reproduit la même erreur. 

If TextBox1.Text <>
""
And IsNumeric(TextBox1.Text) =
True
And TextBox2.Text <>
""
And IsNumeric(TextBox2) =
True
Then

TextBox3.Text =

CStr((
CDbl(TextBox2.Text) -
CDbl(TextBox1.Text)) /
CDbl(TextBox2.Text) * 100)TextBox10.Text =

CStr(
CDbl(TextBox2.Text) -
CDbl(TextBox1.Text))

End
If

If TextBox1.Text <>
""
And IsNumeric(TextBox1.Text) =
True
And TextBox5.Text <>
""
And IsNumeric(TextBox5) =
True
ThenTextBox9.Text =

CStr(
CDbl(TextBox5.Text) /
CDbl(TextBox1.Text))

End
If

Merci fauve Bonne soirée.
Commenter la réponse de cs_Sipat
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 7 avril 2007 à 08:58
0
Merci
Bonjour,
Je n'arrivais plus a faire ce que je voulais,  je  vous explique :
Private

Sub TextBox1_KeyPress(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles TextBox1.KeyPress
'remplacement du point par une virgule 
   If Asc(e.KeyChar) = 46
Then e.KeyChar = Chr(44)
'","
'si c'est une virgule et qu'il y en a déja une dans le textbox, ou qu'elle est tappé en premier caractère, on annule la saisie 
   If Asc(e.KeyChar) = 44
And (
CType(sender, TextBox).Text.IndexOf(
",") > 0
Or
CType(sender, TextBox).Text =
"")
Then e.Handled =
True
'si le caractere n'est pas un chiffre, back ou une virgule, on annule 
   If
Char.IsDigit(e.KeyChar) =
False
And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back
And Asc(e.KeyChar) <> 44
Then e.Handled =
True
End
Sub
Private

Sub TextBox1_KeyUp(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp

If TextBox1.Text <>
"" =
True
And TextBox2.Text <>
""
Then

   TextBox3.Text =
CStr
((
CDbl
(TextBox2.Text) -
CDbl
(TextBox1.Text)) /
CDbl
(TextBox2.Text) * 100)
   TextBox10.Text =
CStr
(
CDbl
(TextBox2.Text) -
CDbl
(TextBox1.Text))

End
If

 If TextBox1.Text <>
""
=
True

And
TextBox5.Text <>
""

Then

   TextBox9.Text = CStr
(
CDbl
(TextBox5.Text) /
CDbl
(TextBox1.Text))

EndIf

' Pour qu'il calcule, il faut que TextBox1.Text contient une chaîne de caractères
' idem pour TextBox2.Text
' Sinon il ne calcule pas
'
'
''On Error GoTo fin
''TextBox3.Text = CStr((CDbl(TextBox2.Text) - CDbl(TextBox1.Text)) / CDbl(TextBox2.Text) * 100)

''TextBox10.Text = CStr(CDbl(TextBox2.Text) - CDbl(TextBox1.Text))
''TextBox9.Text = CStr(CDbl(TextBox5.Text) / CDbl(TextBox1.Text))
''fin:
End
Sub

Private
Sub TextBox1_TextChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.TextChanged

   If TextBox1.Text =
""Then TextBox3.Text "" : TextBox10.Text "" : TextBox8.Text "" : TextBox7.Text
""
'If Len(TextBox1.Text) < 1
Then

Exit

Sub
'TextBox1.Text = Trim(TextBox1.Text) 'enleve les espaces droite et gauche Chr(44)'If Mid(TextBox1.Text, 1, 1) "," Then TextBox1.Text ""
End
Sub
Voilà j'ai enlevé IsNumeric parceque je n'arrivé plus à faire dans TextBox1 le calcule au fur et a mesure que j'inscrivé des nombres et je pense que ça devais faire double emploi avec l'evènement KeyPress.
Qu'est ce que vous en pensez ?c'est bien comme ça ?
Merci ,bonne journée
Commenter la réponse de cs_Sipat

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.