Comment utiliser TextBox1.Numeric = True ?

Résolu
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007 - 6 avril 2007 à 13:50
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007 - 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.

8 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 avril 2007 à 20:01
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   
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 avril 2007 à 21:04
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   
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
6 avril 2007 à 14:01
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
 
++
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 avril 2007 à 14:04
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"
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
6 avril 2007 à 17:48
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 #
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
6 avril 2007 à 20:51
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.
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
6 avril 2007 à 21:45
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.
0
cs_Sipat Messages postés 71 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 15 avril 2007
7 avril 2007 à 08:58
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
0
Rejoignez-nous