Bonjour
pour la présentation du code merci de choisir le langage basic, je te l'ai déjà dit il y a quelques jours.
On t'a déjà dit, aussi et à maintes reprises, d'enlever la référence à visual basic dans tes projets, ainsi qu'activer Option Strict et Option Explicit.
Pour tes variables, puisque le "calcul" est une somme de 19 valeurs, tu devrais utiliser une List(of double) et sa méthode Sum.
Pour ton calcul,
Je ne regarde que le code :
If X3 = 0 And X2 = 0 And X1 = 0 Or Y1 = 0 And Y2 = 0 Then Valeure.Text = Str(CDec(0)) Else Valeure.Text = CStr(CDec((X3 + X2 + X1) / (Y1 + Y2))) End If
si Y1=5 et Y2=-5, les 2 sont différents de 0, mais tu aura une erreur de division par 0.
Il serait préférable de tester Y1+Y2 plutot que les 2 séparés.
Et concernant les X, pas besoin de tester, car 0/Y donnera toujours 0.
Bonsoir à vous deux,
Je vais essayer d'apporter un peu plus de précision.
je dois trouver une solution pour augmenter ou diminuer les valeurs des Textbox "X1; X2; X3 et Y1; Y2" en gardant le même ratio entre elles , tout en prenant en compte qu'il faut que l'utilisateur remplisse 2 valeurs au minimum, un X et un Y pour que le calcul se fasse.
Par exemple si Y1 = 157.89; Y2 = 171.76; X1 = 113.21; X2=92.59; X3= 149.25; B1=300 et V= 200
le total est de 978.45
Valeure.Text = CStr(CDec((X3 + X2 + X1) / (Y1 + Y2))) => (113.21+92.59+149.25)/(157.89+171.76) =1.07
il faut donc augmenter les valeurs X1 ,X2 ,X3 ,Y1 et Y2 proportionnellement jusqu'à 1000 tout en gardant le rapport de 1.07, après il peut aussi arriver que cela dépasse 1000, si au dessous tel code si en dessous tel code.
If RESULTAT.Text > Str(CDec(1000)) Then Else if RESULTAT.Text < Str(CDec(1000)) Then
sinon mon projet est bien en Option Strict et Option Explicit.
J'ai encore dû modifier l'une de tes zones de saisie de code.
sinon mon projet est bien en Option Strict et Option Explicit.
Ha bon, alors X1, X2, X3 et Y1, Y2 ne sont pas des textbox, sinon, il manque .Text partout et avec ces options ça ne compilerait pas.
De plus tu n'as pas enlevé la référence à Visual Basic, car Str et CDec ce n'est pas du VB.Net.
Enfin, ta précision n'a rien précisé du tout, parce que je comprends le même besoin qu'à ton premier message.
Et donc ma première réponse reste complètement valable.
Oui, cela n'a pas été précisé mais les lettres sont des variables
exemple => Dim Y1 As Decimal
Pour Str et Cdec, VB.net ne me donne pas le choix, sinon j'ai une erreur de conversion String en Decimal.
cstr et cdec sont à éviter.
If RESULTAT.Text > Str(CDec(1000)) Then
est complètement à bannir, si tu veux comparer 2 nombres :
If Decimal.parse(RESULTAT.Text) > 1000 Then
Est plus juste.
Pour remplacer CDec -> Decimal.Parse (ou TryParse si la valeur peut être incorrecte)
Pour Remplacer CStr -> <Value>.ToString()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour NHenry,
Merci pour vos conseils, je viens de tester Decimal.parse et cela fonctionne parfaitement, j'étais resté sur Cdec car cela faisait le taf aussi