cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007
-
6 avril 2007 à 13:50
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007
-
7 avril 2007 à 08:58
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
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 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 :
Dim nombre As Decimal = ((CDec(TextBox1.Text) - CDec(TextBox2.Text)) / CDec(TextBox3.Text)) * 100
TextBox4.Text nombre.ToString ou TextBox4.Text CStr(nombre)
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
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 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 ...), ----
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 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.
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"
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 :
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 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.
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 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
' 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