Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 2013
-
Modifié par Attila54 le 8/08/2013 à 09:57
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 2013
-
12 août 2013 à 11:09
Bonjour
Je rencontre un petit souci dans une boucle de calcul qui au final, doit m'afficher QI.Text dans un textbox
Il se fait en fonction de
Textboxosod qui peut prendre soit OS soit OD comme valeur
Txtrelift qui peut prendre soit Y soit N comme valeur
QILEFT et QIRIGHT
L'idée est la suivante
Si txtrelift affiche N, on traite QI selon textboxosod
SI textboxosod affiche OS et que QILEFT =< -0.3 alors QI affichera -0.30
SI textboxosod affiche OS et que QILEFT > -0.3 alors QI affichera le même valeur que QILEFT
SI textboxosod affiche OD et que QIRIGHT =< -0.3 alors QI affichera -0.30
SI textboxosod affiche OS et que QIRIGHT > -0.3 alors QI affichera le même valeur que QIRIGHT
Si txtrelift affiche Y, on traite QI selon textboxosod
SI textboxosod affiche OS alors QI affichera la même valeur que QILEFT
SI textboxosod affiche OD alors QI affichera le même valeur que QIRIGHT
Cela paraissait simple et j'ai fait ceci :
Private Sub calculqi()
'calcul de qi
If Txtrelift.Text = "N" Then
'Cas de l'oeil gauche
If TextBoxosod.Text = "OS" Then
Select Case VALQILEFT
Case Is <= -0.3
ValQI = -0.3
Case Else
ValQI = VALQILEFT
End Select
Else
'Cas de l'oeil droit
Select Case VALQIRIGHT
Case Is <= -0.3
ValQI = -0.3
Case Else
ValQI = VALQIRIGHT
End Select
End If
Else
'cas de l'oeil droit
If TextBoxosod.Text = "OD" Then
ValQI = VALQIRIGHT
Else
'cas de l'oeil gauche
ValQI = VALQILEFT
End If
End If
QI.Text = ValQI.ToString("0.00")
End Sub
Pourtant quelle que soient les valeurs de QILEFT, QIRIGHT, txtrelift et textboxosod, QI m'affiche 0.00
exemple : Txtrelift affiche "N"
Textboxosod affiche "OD"
QILEFT affiche "-1.14"
QIRIGHT affiche "-0.59"
si je suis le raisonnement, QI devrait afficher : "-0.30"
eh bien il m'affiche royalement "0.00"
Je ne vois pas où j'ai fait une erreur dans ma séquence de codage
Pourrais je avoir un avis éclairé ?
Merci beaucoup
Zermelo
Messages postés378Date d'inscriptionsamedi 22 septembre 2012StatutMembreDernière intervention13 août 201714 11 août 2013 à 16:28
Bonjour Attila54.
Vous disposez d'un TextBox qui délivre Me.QILEFT.Text As String = "-1.14".
Vous avez besoin d'un nombre VALQILEFT = 1.14 As Double.
Et voila pourquoi il vous faut convertir Me.QILEFT.Text en VALQILEFT.
Comment faire ? Vous êtes dans de beaux draps !
Heureusement, il existe une fonction CDbl qui convertit un String en Double
Malheureusement, cette fonction ne convertit que les strings utilisant la virgule décimale, et non pas le point décimal.
Heureusement, il existe une fonction Replace qui, dans un string, remplace partout n'importe quel caractère par un autre.
En conséquence, attrapez le string à point décimal Me.QILEFT.Text, collez-lui une fonction Replace(".", ","), mettez le tout dans une fonction CDbl, et servez chaud.
Cordialement.
--
Étant illettré, je signe d'une croix : ×
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 Modifié par shayw le 11/08/2013 à 21:20
Bonjour
on peut aussi
Dim ValQiLeft,ValQiRight,result as double
'verifie le contenu du textbox et essai dans le convertir en double
If Double.TryParse(QiLeft, result) Then
ValQiLeft = result
End If
ou on suppose que le textbox contient des caractères chiffres et séparateur décimal on le converti en double
Modifié par shayw le 11/08/2013 à 21:20
on peut aussi
ou on suppose que le textbox contient des caractères chiffres et séparateur décimal on le converti en double
aussi cdbl est plutot absolete
Bonne prog