IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

multiplication entre textbox et label


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut multiplication entre textbox et label
    Bonjour à tous,

    Sur VS2015 je n'arrive pas créer une multiplication entre plusieurs textbox et label, les calculs fonctionnent uniquement si les chiffres sont sans décimal.

    A partir du moment ou je saisis des valeur du type 8.5 ou 1.3 ect.. le résultat est incorrect.

    Exemple de calcul:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lblresult.Text = (Val(txt1.Text) * Val(lbl2.Text)) * (Val(txt3.Text) * 0.01)

    Auriez-vous une idée pourquoi les nombres avec décimal ne sont pas prises en compte ? Je ne rencontrai pas ce pb sur VS2010 meme en saisissant des point ou des virgules il me prennait tout.

    Vous remerciant par avance pour vos conseils

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    à première vue je pense qu'il s'agit d'un souci de Culture.
    Si tu utilises la virgule à la place du point comme séparateur décimal (ou inversement), cela fonctionne ?
    Si c'est bien ça tu auras plusieurs façon de remédier au souci :
    - saisir tes nombres avec le bon séparateur :p
    - faire un string replace du mauvais séparateur par le bon séparateur,
    - définir une Culture qui convient à ton usage,
    - utiliser une fonction de parse qui prend en paramètre une Culture spécifique.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    Je pense simplement qu'il s'agit de petit soucis de conversion et de type , pense bien a convertir ton texte en double/float/decimal .

    Dans ce style , mais il y'a pleins de façons de faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       private void btnCalcul_Click(object sender, EventArgs e)
            {
                double val1 = Convert.ToDouble(textBox1.Text);
                double val2 = double.Parse(textBox2.Text);
                double val3 = double.Parse(textBox3.Text);
     
                tbResult.Text = ((val1 * val2) * (val3 * 0.01)).ToString();
            }
    throw new NoSignatureException();

  4. #4
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    à première vue je pense qu'il s'agit d'un souci de Culture.
    Si tu utilises la virgule à la place du point comme séparateur décimal (ou inversement), cela fonctionne ?
    Si c'est bien ça tu auras plusieurs façon de remédier au souci :
    - saisir tes nombres avec le bon séparateur :p
    - faire un string replace du mauvais séparateur par le bon séparateur,
    - définir une Culture qui convient à ton usage,
    - utiliser une fonction de parse qui prend en paramètre une Culture spécifique.
    Merci pour vos retours, avec un point ou une virgule c'est pareil cela ne fonctionne pas et me retourne 0.

  5. #5
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par WaterTwelve21 Voir le message
    Bonjour ,

    Je pense simplement qu'il s'agit de petit soucis de conversion et de type , pense bien a convertir ton texte en double/float/decimal .

    Dans ce style , mais il y'a pleins de façons de faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       private void btnCalcul_Click(object sender, EventArgs e)
            {
                double val1 = Convert.ToDouble(textBox1.Text);
                double val2 = double.Parse(textBox2.Text);
                double val3 = double.Parse(textBox3.Text);
     
                tbResult.Text = ((val1 * val2) * (val3 * 0.01)).ToString();
            }

    est-il possible d'avoir un exemple en vb.net ? Etant débutant j'ai du mal avec votre code ci dessus.

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Etrange ... exemple de code testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    '' // obligé de mettre strict à off sinon le compilo braille sur les conversions implicites
    Option Strict Off
    '' // j'ai viré les parenthèses qui servent à rien
    txt.Text = Val("3.2") * Val("20") * Val("50") * 0.01 '' // résultat "32"
    txt.Text = Val("3,2") * Val("20") * Val("50") * 0.01 '' // résultat "30"
    En fait pour obtenir "0" il faut qu'un des Val() te renvoie 0, soit :
    - tu saisis réellement 0,
    - tu saisis 0.xxx avec le mauvais séparateur de décimale,
    - tu saisis une valeur avec un char non-numérique avant les char numériques,
    - tu ne saisis rien.

    Pour les fonctions de conversions dont parle WaterTwelve21 ça s'écrit comme ça (pour exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dbl As Double = Double.Parse(txt1.Text)
    Mais attention, là le mauvais séparateur ne va pas juste tronquer le résultat mais carrément lever une exception
    Tu peux alors soit catcher l'exception soit utiliser un TryParse. La fonction Convert.ToDouble aura ce même comportement.
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Mais attention, là le mauvais séparateur ne va pas juste tronquer le résultat mais carrément lever une exception
    Tu peux alors soit catcher l'exception soit utiliser un TryParse. La fonction Convert.ToDouble aura ce même comportement.
    En effet je n'ai absolument pas envisagé les exceptions avec le séparateur ou la malice de l'utilisateur , Il faut bien y penser . Je n'ai pas fait attention que c'était du langage VB , désolé .
    throw new NoSignatureException();

  8. #8
    Expert confirmé Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Points : 5 522
    Points
    5 522
    Par défaut
    Fonctionne si txt1.Text contient du texte représentant un nombre valide et tient compte de la "Culture". Donc si ton séparateur décimal est la virgule "3" ou "3,5" seront des valeurs valides mais pas "3.5".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double.Parse(txt1.Text)
    agit de la même manière.

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double.Parse(txt1.Text, CultureInfo.InvariantCulture)
    fonctionnera correctement avec "3.5" mais pas avec "3,5".

    Tu dois donc prendre en compte les différents cas possibles avec des try catch par exemple.

Discussions similaires

  1. Multiplication entre des textboxs
    Par jeje25440 dans le forum VB.NET
    Réponses: 12
    Dernier message: 06/08/2013, 03h45
  2. [Talend Open Studio] Liens multiples entre tables
    Par supprend dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 01/04/2007, 11h42
  3. [C#] [2.0] Hello World, textbox, button, label
    Par shako95 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/12/2006, 15h33
  4. [VBA E] Problème de lien entre textbox et cellule
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/06/2006, 08h49
  5. [VB6] Composer un LONG avec TextBox et Label
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/05/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo