Valeur entrée manuellement non prise en compte

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - Modifié par jee pee le 17/08/2013 à 12:35
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 21 août 2013 à 12:56
Bonjour,
J'ai un souci assez difficile a comprendre pour moi et j'aurais aimé avoir des avis plus éclairés que je ne puis en apporter moi même

Dans une appli, j'ai une sub appelée download qui
- va chercher un fichier excel dans un ftp
- charge les data du ftp dans un form, notament des valeurs qui seront affichéees dans deux textbox QILEFT et QIRIGHT
- Effectue un calcul en fonction de QILEFT et QIRIGHT : le resultat est affiché dans une textbox QI

Voila la sub qui calcule QI en fonction de QILEFT et QIRIGHT :
 Private Sub calculqi()
        'Erreur dans QI
        'affichage de QI en fonction de QILEFT et QIRIGHT
        If TextBoxosod.Text = "OS" Then
            indiceoeil = 0
            Etiqoeiltraite.Text = "OS"
            VALQILEFT = Convert.ToDouble(QILEFT.Text)
            ValQI = VALQILEFT
            QI.Text = ValQI.ToString("0.00")
        End If
        If TextBoxosod.Text = "OD" Then
            indiceoeil = 1
            Etiqoeiltraite.Text = "OD"
            VALQIRIGHT = Convert.ToDouble(QIRIGHT.Text)
            ValQI = VALQIRIGHT
            QI.Text = ValQI.ToString("0.00")
        End If

        ' remplacement du "." par une ","
        If DecimalSeparator = "," Then QI.Text = QI.Text.Replace(".", ",")
        ' test si numérique
        If Double.TryParse(QI.Text, ValQI) = True Then
            ' QI contient bien une valeur numérique
            ValQI = Convert.ToDouble(QI.Text)

            If Txtrelift.Text = "N" Then
                'Calcul de delta QI 
                deltaqi.Text = (Math.Abs(CDbl(QILEFT.Text)) - Math.Abs(CDbl(QIRIGHT.Text))).ToString("0.00")
                'Cas de l'oeil gauche
                If TextBoxosod.Text = "OS" Then
                    Etiqoeiltraite.Text = "OS"
                    Select Case VALQILEFT
                        Case Is <= -0.3
                            ValQI = -0.3
                        Case Else
                            ValQI = VALQILEFT
                        End Select
                    QI.Text = ValQI.ToString("0.00")
                End If

                'Cas de l'oeil droit
                If TextBoxosod.Text = "OD" Then
                    Etiqoeiltraite.Text = "OD"
                    Select Case VALQIRIGHT
                        Case Is <= -0.3
                            ValQI = -0.3
                        Case Else
                            ValQI = VALQIRIGHT
                     End Select
                    QI.Text = ValQI.ToString("0.00")
                End If
            End If

            If Txtrelift.Text = "Y" Then
                'calcul de deltaQI
                deltaqi.Text = "0.00"

                'cas de l'oeil droit
                If TextBoxosod.Text = "OD" Then
                    Etiqoeiltraite.Text = "OD"
                    ValQI = VALQIRIGHT
                Else
                    'cas de l'oeil gauche
                    ValQI = VALQILEFT
                    QI.Text = ValQI.ToString("0.00")
                End If
            End If
        Else
            messageaff = "QI is not a numeric value"
            infoaff = "Incorrect data"
            MessageBox.Show(messageaff, infoaff, MessageBoxButtons.OK, MessageBoxIcon.Warning)
            QI.Text = ""
            QI.Refresh()
            QI.Focus()
            erreur = True
            Exit Sub
        End If
    End Sub


tout se passe bien mais voila :
Je dois pouvoir changer la valeur affichée de QI manuellement si je le désire.
J'ai pensé faire une action sur QI.textchanged et je peux changer la valeur de QI dans la textbox, mais c'est la valeur initiale qui reste comme référence pour les calculs ultérieurs.

Exemple :
- la sub calculqi me calcule et m'affiche un QI de -0.45. Je calcule par exemple un QF = f(QI), ca me donnera par exemple 0.25
- Je clique sur le textbox QI, j'entre au clavier -0.15 et paffff ..... le QF reste toujours a 0.25 bien que le calcul de QF se fasse. la derniere valeur entrée est affichée mais pas prise en compte.

En clair je ne vois pas comment dire :
sur QI.Textchanged, c'est la derniere valeur entrée qui est la bonne.

Pourquoi d'après vous ?
Merci bien

25 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
20 août 2013 à 16:13
effectue un petit test
tu as dis
download() lance ensuite automatiquement la sub calculqi()
alors
1 mets en commentaire calculqi() pour empecher son execution
2 dans le textbox QI inscris une valeur
3 clique le bouton calcul
4 qu'obtiens tu ?
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
20 août 2013 à 16:34
ben rien de spécial, la calcul se fait avec le QI que j'ai entré. Tu voulais me démontrer le bien fondé de la solution de Galain ?

Le truc qui m'a induit en erreur c'est que je pouvais changer toutes les autres data importées via l'excel et cela fonctionnait mais pas QI. Pourquoi ? parce que le sacripan était calculé et validé ... Me trompe je ?

--
0
Salut Attila
Ce que cs_ShayW veut dire dans son dernier message c'est qu'il faut que tu testes si la frappe clavier de QI.text que tu rentres pour modifier sa valeur est correcte !

rappelles-toi les tests faits sur les Textbox pour vérifier si ce sont bien des valeurs numériques qui sont rentrées et ce avant l'appel à la sub Calcul !
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
Modifié par Attila54 le 21/08/2013 à 11:14
Salut galain
Oui oui j ai tout testé
D'abord avec qicalcule puis en changeant manuellement puis en mettant des valeurs volontairement erronées
J ai verifie ds la bdd et sur les printform et vision de près.
Tout est ok
Ceci pose j avais repositionne la d'un erreurmessage() de manière a ce qu elle s exécute au moment adéquat.

Bientôt la fin mais le plus dur m attend ... Tout revoir l impression pour passer en pdf ( je pense que la méthode printform ne conviendra pas) mais ceci est une autre histoire.

Encore merci a vs deux :-)

Par contre impossible de te saluer en mp galain et ton mail a change ...
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 août 2013 à 12:00
Salut

espèrons le
j'ai travaillé une fois comme testeur (QA) on m'avait dit le but est de ne pas démontrer que l'application fonctionne mais le contraire
0

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

Posez votre question
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
21 août 2013 à 12:56
ca c vrai moion m a toujours dit que le meilleur testeur était celui qui n y connait rien, t es sur qu il plantera l ampli :-P
Avec moi c du tout cuit ....


--
0
Rejoignez-nous