cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007
-
12 avril 2007 à 18:36
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007
-
15 avril 2007 à 21:11
Bonjour,
Je viens de me rendre compte qu'il s'affiche suivant le calcul :
Non numérique ... quand je saisie un zéro..., alors pour y remedier je fais cela :
If Mid(TextBox11.Text, 1, 3) =
"Non"
Then TextBox11.Text =
"0"If Mid(TextBox11.Text, 1, 7) "-Infini"Then TextBox11.Text "0"If Mid(TextBox11.Text, 1, 7) "+Infini"Then TextBox11.Text "0"
Je voulais vous demandez s'il falait faire comme cela ?
Une autre solution.
Pour empêcher le double zéro je pensais à ajouter une ligne la :
Private
Sub TextBox2_KeyPress(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles TextBox2.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
mais je n'y arrive pas (J'arrive qu'a supprimer totalement l'appuis sur 0 !)
Avez-vous une idée ?
Merci.
A voir également:
Affichage dans TextBox Non numérique ou -Infini ou +Infini
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 avril 2007 à 18:43
Salut
C'est plus clair, en effet.
Un double zéro en tête de zone de texte, c'est facile à repérer.
Tu le fais déjà pour la saisie d'un virgule en tête de champ (*)
Il te suffit d'extrapoler :
'si c'est encore un zéro et qu'il y en a déja un dans le textbox, on annule la saisie
If e.KeyChar = "0" And TextBox1.Text="0" Then e.Handled =
True
Ca devrait suffire, non ?
(*) Annulation d'une virgule en tête : Pourquoi ?
Cela fait partie des normes généralement autorisées (voir Calculette ou Excel)
Il vaudrait mieux dire que si la virgule est repérée en tant que premier caractère, on insère un 0 devant, ça serait plus logique.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 avril 2007 à 19:56
Re
Bah, si ça fonctionne, laisse comme ça, mais il serait utile d'utiliser un Select Case :
Select Case True Case (Mid(TextBox11.Text, 1, 3) "Non"), (Mid(TextBox11.Text, 1, 7) "-Infini"), (Mid(TextBox11.Text, 1, 7) = "+Infini")
TextBox11.Text = "0"
Case Else
TextBox11.Text = CStr(System.Math.Round(CDbl(TextBox11.Text), 2))
End Select
Ne retiens que l'idée, je n'ai pas tester la syntaxe : ADSP (à démerder sur place)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 avril 2007 à 18:59
Salut
Ta question est incompréhensible.
Tu travailles sur ton projet et tu sais de quoi tu parles, mais nous, on n'en sait rien.
Alors éclaircis les choses.
Tu parles d'infini, de double zéro, de non numérique ....
Comme une rédaction en français :
Introduction : Dans quel contexte, ce que tu cherches à faire
Développement : Tu expliques ce que tu as déjà fait
Conclusion : ta question
Parce qu'une phrase qui commence par "Je viens de me rendre compte" ne nous aide pas vraiment
Merci
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007 12 avril 2007 à 20:50
Bonsoir,
Excuser-moi pour le charabia...
- Introduction : Dans quel contexte, ce que tu cherches à faire
Je veux faire calculer TextBox1 et TextBox2 ensemble et recuperer le resultat sur un troisieme TexBox11
- Développement : Tu expliques ce que tu as déjà fait
Voilà ce que j'ai fais :
Private
Sub TextBox1_GotFocus(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles TextBox1.GotFocus
TextBox1.SelectionLength = 0
End
Sub
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
As
Object,
ByVal e
As System.Windows.Forms.KeyEventArgs)
Handles TextBox1.KeyUp
If TextBox1.Text <>
"" =
True
And TextBox2.Text <>
""
Then TextBox11.Text =
CStr((
CDbl(TextBox2.Text) -
CDbl(TextBox1.Text)) /
CDbl(TextBox2.Text) * 100)
End
If
End
Sub
Private
Sub TextBox1_TextChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.TextChanged
If IsNumeric(TextBox1.Text) =
True
Then
If TextBox1.Text =
""Then TextBox1.Text "" : TextBox11.Text ""
ElseTextBox1.Text "" : TextBox11.Text ""
End
If
End
Sub
Private
Sub
TextBox2_KeyPress(
ByVal
sender
As
Object
,
ByVal
e
As
System.Windows.Forms.KeyPressEventArgs)
Handles
TextBox2.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
TextBox2_KeyUp(
ByVal
sender
As
Object
,
ByVal
e
As
System.Windows.Forms.KeyEventArgs)
Handles
TextBox2.KeyUp
EndSub
Private
Sub
TextBox2_TextChanged(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
TextBox2.TextChanged
' If Mid(TextBox2.Text, 1, 2) "00" Then TextBox2.Text "" 's'il y a saisie deux 00 alors efface
If
IsNumeric(TextBox2.Text) =
True
Then
If
TextBox2.Text =
""
Then
TextBox11.Text =
""
TextBox11.Text =
CStr
((
CDbl
(TextBox2.Text) -
CDbl
(TextBox1.Text)) /
CDbl
(TextBox2.Text) * 100)
Else
If
IsNumeric(TextBox2.Text) =
False
Then
TextBox2.Text =
""
: TextBox11.Text =
""
End
If
End
Sub
Private
Sub
TextBox11_TextChanged(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
TextBox11.TextChanged
' Dim toto As String
' MsgBox(TextBox11.Text)
' toto = Mid(TextBox11.Text, 1, 3)
' If Mid(TextBox11.Text, 1, 2) "00" Then TextBox11.Text "0"
'If Mid(TextBox11.Text, 1, 7) "-Infini" Then TextBox11.Text "0"
'If Mid(TextBox11.Text, 1, 3) "Non" Then TextBox11.Text "0"
If
TextBox11.Text <>
""
=
True
Then
TextBox11.Text =
CStr
(System.Math.Round(
CDbl
(TextBox11.Text), 2))
End
If
End
Sub
- Conclusion : ta question
Comment eviter la saisie de deux zero qui se suivent au debut (style 0012)
Je voulais vous demandez s'il falait faire comme cela pour eviter que dans certaines conditions le TexBox11 affiche le texte suivant (Non numérique ou -Infini ou +Infini)?
If Mid(TextBox11.Text, 1, 3) "Non"Then TextBox11.Text "0"If Mid(TextBox11.Text, 1, 7) "-Infini"Then TextBox11.Text "0"If Mid(TextBox11.Text, 1, 7) "+Infini"Then TextBox11.Text "0"
Pour le double zero peut être serait 'il possible d'ajouter une ligne dans KeyPress ?
Merci, bonne soirée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007 14 avril 2007 à 08:58
Bonjour,
Je viens d'ajouter la ligne ça fonctionne bien pour le double zéro en tête de zone de texte.
Et pour ce qui est de l'affichage ... dans certaines conditions le TexBox11 affiche le texte suivant (Non numérique ou -Infini ou +Infini)?
J'ai ajouté les lignes suivantes dans TextBox11_TextChanged
If Mid(TextBox11.Text, 1, 3) "Non"Then TextBox11.Text "0"If Mid(TextBox11.Text, 1, 7) "-Infini"Then TextBox11.Text "0"If Mid(TextBox11.Text, 1, 7) "+Infini"Then TextBox11.Text "0"
IfTextBox11.Text <>
""=
True
Then
TextBox11.Text = CStr(System.Math.Round(
CDbl(TextBox11.Text), 2))
End
If
End
Sub
Je voulais vous demander s'il fallait faire comme cela pour éviter l'affichage de Non numérique ou -Infini ou +Infini dans TextBox11 ou peut être qu'il y a une autre solution ?
Merci,bonne journée