La conversion de la chaîne "" en type 'Double' n'est pas valide
Résolu
kikou93
Messages postés
438
Statut
Membre
-
kikou93 Messages postés 438 Statut Membre -
kikou93 Messages postés 438 Statut Membre -
Bonjour,
ça faisait longtemps que je n'ai pas poser des questions (j'étais trés occupée avec mes études)
j'utilise Visual basic express 2010
je vous explique mon problème et j'espère que quelqu'un pourrait m'aider
j'ai par exemple la condition suivante :
If TextBox1.Text > 0 Then
.....
End if
mais il affiche l'erreur suivante :
La conversion de la chaîne "" en type 'Double' n'est pas valide
j'ai essayer avec :
If CInt(TextBox.Text) > 0
If Val(TextBox.Text) > 0
ça marche, aucun erreur ne s'affiche
mais le problème et que si textBox1.text = 0,009 La valeur qui est prise en compte et 0 et pas 0,009
normalement la condition est vérifiée
J'ai essayé aussi avec :
If CDbl(TextBox.Text) > 0
mais la même erreur s'affiche (La conversion de la chaîne "" en type 'Double' n'est pas valide)
aidez-moi s'il vous plait et merci d'avance pour votre aide
--
Comment ça marche c'est cool!
1000 Merci les Amis
ça faisait longtemps que je n'ai pas poser des questions (j'étais trés occupée avec mes études)
j'utilise Visual basic express 2010
je vous explique mon problème et j'espère que quelqu'un pourrait m'aider
j'ai par exemple la condition suivante :
If TextBox1.Text > 0 Then
.....
End if
mais il affiche l'erreur suivante :
La conversion de la chaîne "" en type 'Double' n'est pas valide
j'ai essayer avec :
If CInt(TextBox.Text) > 0
If Val(TextBox.Text) > 0
ça marche, aucun erreur ne s'affiche
mais le problème et que si textBox1.text = 0,009 La valeur qui est prise en compte et 0 et pas 0,009
normalement la condition est vérifiée
J'ai essayé aussi avec :
If CDbl(TextBox.Text) > 0
mais la même erreur s'affiche (La conversion de la chaîne "" en type 'Double' n'est pas valide)
aidez-moi s'il vous plait et merci d'avance pour votre aide
--
Comment ça marche c'est cool!
1000 Merci les Amis
3 réponses
-
Bonsoir,
Si ton pic est configuré pour que le point soit le symbole décimal alors 0,009 n'est pas un nombre, 0.009 oui.
A la place de Cquelquechose, utilse la classe Convert, tu pourras choisir quel est le modèle de nombre à utiliser
-
-
merci de m'avoir répondu aussi rapidement
j'ai configuré la textBox comme suite :
Dim desNuméro() As Char = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not desNuméro.Contains(e.KeyChar) And Not Asc(e.KeyChar) = 8 Then
e.Handled = True
End If
If e.KeyChar = "."c Or e.KeyChar = ","c Then
e.Handled = True
If Not (TextBox1.Text.Contains(",")) Then TextBox1.AppendText(",")
End If
End Sub
pour que la textBox accepte seulement les numéro (0, 1, 2, 3, 4, 5, 6, 7, 8,9) et la virgule
alors le symbole décimal est la virgule et non le point
même si je tape sur la touche du point, dans la textBox x'est la virgule que s'affiche -
Dim toto As Double = Convert.ToDouble("0,009", CultureInfo.GetCultureInfo("fr-FR"))
je ne c pas si cette méthode marche mais sa ne me facilite pas le travaille car la condition que j'ai contient beaucoup de textBox :
If textBox1.text >0 and textBox2.text>0 and textBox3.text>0 .... and textBox30.text>0 then
.........
End if -
-
-
-
Et en plus des conseils de NHenry (bonjour) n'utilise pas d'accents, ou autre modificateur de lettre dans les noms de variable ou fonction.
Si tu dois ouvrir ton projet sur un ordinateur anglais, ça boguera de partout.
je ne c pas si cette méthode marche mais sa ne me facilite pas le travaille car la condition que j'ai contient beaucoup de textBox
je t'ai montré la voie, pas la solution pile poil adaptée à ton cas.
Tu pourrais écrire une fonction que tu appellerais pour chaque TextBox, tu peux aussi faire une méthode d'extension.
Mais si tu appliques exactement ce code, "0.009" ne serait pas accepté
Il y aurait çaDim texte as String = "0,009" Dim toto As Double = Convert.ToDouble(texte.Replace(",","."), CultureInfo.GetCultureInfo("fr-FR"))
Ce qui permettrait d'accepter "0,009" ou "0.009", mais un grand nombre avec séparation des milliers américaine "1,000,000.001" ne marcherait pas.
Y'a un moment ou il te faudra figer le format d'entrer en utilisant la validation par exemple -
Ben avec "0.009" ça passe ou pas ?
Avec .NET, il y a double.Parse qui permet d'accepter d'autres cultures que celle du système pour les décimales .