VB6 et probleme de boucle IF

Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 18 oct. 2010 à 19:03
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 19 oct. 2010 à 19:01
Bonjour
Je dois, dans le cadre de mon travail, developper une petite apli en VB6 et je suis confronté a un problème de boucle dont je ne saisis pas la totalité de la subtilité.

Pour faire simple voici le postulat :
Voici les donnees :
6 Texbox : Textbox1, Texbox2, Textbox3, Texbox4, Texbox5 et Texbox6

un bouton Commandbutton de calcul

Textbox1: est egale a Une Texbox precedemment calculée que j'appelerai TextBox6
TextBox2 est une valeur a entrer variant de -2.00 à +2.00

Je veux créer les cas suivants :

Si Text1.Text < 0 et Text2.Text < 0
Text3.Text = Text1.Text + Text6.Text
Text4.Text = Text2.Text / Text1.Text
Text5.Text = Text4.Text / 2

Si Text1.Text < 0 et Text2.Text > 0
Text3.Text = Text1.Text - Text2.Text
Text4.Text = Text2.Text * Text1.Text
Text5.Text = Text4.Text

Si Text1.Text > 0 et Text2 < 0
Text3.Text = Text1.Text * Text2.Text
Text4.Text = Text2.Text * 3
Text5.Text = Text3.Text / 5

Si Text1.Text > 0 et Text2 > 0
Text3 = Text1.Text - Text6.Text
Text4 = Text3.Text * 3
Text5 = Sqr Text3.Text
J'ai crée le code suivant :
Text1.Text = Format (CCur(Text6.Text)), "0.00")
If Text6.Text < 0 Then
                 If Text2.Text < 0 Then                        
                    Text3.Text = Val(Text1.Text) + Val(Text6.Text)
                    Text4.Text = (Text2.Text) / (Text1.Text)
                    Text5.Text = (Text4.Text) / 2
                 Else
                    Text3.Text = (Text1.Text) - (Text2.Text)
                    Text4.Text = (Text2.Text) * (Text1.Text)
                    Text5.Text = (Text4.Text)
                    End If
Else
If Text6.Text > 0 Then
                 If Text2.Text > 0 Then
                    Text3.Text = (Text1.Text) * (Text2.Text)
                    Text4.Text = (Text2.Text) * 3
                    Text5.Text = (Text3.Text) / 5
                 Else
                    Text3 = (Text1.Text) - (Text6.Text)
                    Text4 = (Text3.Text) * 3
                    Text5 = Sqr(Text3.Text)
                 End If
End If
End If


Mon problème : Ps : seuls les 2 premiers cas sont traités, pas les 2 derniers. Je me dis que j'ai du faire une erreur dans ma boucle mais je ne vois pas ou
Merci pour un indice

3 réponses

nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
18 oct. 2010 à 21:14
Bonjour,
je viens d'essayer ton code, il marche bien chez moi si je change de valeur pour la textbox6 il change de cas et de meme pour la textbox2.

si petite chose j'ai remplacer les "Text1,Text2,Text3,Text4,Text5,Text6" par
"TextBox1,TextBox2,TextBox3,TextBox4,TextBox5,TextBox6". et aussi rajouter les ".text" pour le dernier cas.

si tu as encore des problèmes fait signe.

Bon courage

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 oct. 2010 à 08:52
Salut

Tu peux aussi simplement traduire ce que tu as écrit en français, en prenant garde que Text1.Text, c'est du ... texte et que tu veux comparer des chiffres.
    If Val(Text1.Text) < 0 And Val(Text2.Text) < 0 Then
        ' Code
    ElseIf Val(Text1.Text) < 0 And Val(Text2.Text) > 0 Then
        ' Code
    ElseIf Val(Text1.Text) > 0 And Val(Text2.Text) < 0 Then
        ' Code
    ElseIf Val(Text1.Text) > 0 And Val(Text2.Text) > 0 Then
        ' Code
    ElseIf Val(Text1.Text) 0 And Val(Text2.Text) 0 Then
        ' Code en cas d'égalité (pas traité)
    End If

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
19 oct. 2010 à 19:01
merci beaucop a vou deux,
Jack, je suppose que Val(Text1.Text) renvoie ce coup ci une valeur et non plus du texte
Mondernier souci est de bien definir le type des Textbox, en fait elles doivent toutes contenir des valeurs comprises entre -100.00 et +100.00 et surtout ne pas me faire d'arrondi" lors d'operations de calculs. Un peu cmme une calculette quoi.

J'ai essaye
TextBox4.Text = String.Format("{0:N4}", CSng(TextBox2.Text) * CSng(TextBox3.Text))
pour tester l'addition de deux valeurs comprises entre -100.00 et +100.00 avec deux decimales non arrondies au resultat mais j'ai un probleme d'arrondi

j'apprends mais ce n'est pas facile même en lisant quand on en a jamais fait ou presque ..
0
Rejoignez-nous