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

VB.NET Discussion :

Pourquoi j'ai toujours 0.00 en resultat ? [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut Pourquoi j'ai toujours 0.00 en resultat ?
    Bonjour,
    Sur un petit log de 2 forms, j'ai le souci suivant
    Le form1 procede a des calculs et les affiche dans des textbox
    Pour cela on lui entre des donnes numeriques dans d'autres textbox

    TextboxX et TextboxY contiennent des valeurs calculées et se trouve dans form1

    Sur clic, je cache le form1 et j'ouvre un form2, par la meme occasion, j'exporte les valeurs contenues dans TextboxX et TextboxY dans des textboxA et B du form2

    Cette operation fonctionne bien et je me retrouve toutes les valeurs necessaires au calcul dans le form2

    le calcul est le suivant :

    Si valTextboxA > 0
    la valeur contenue dans une textboxC sera la valeur de textboxX - la valeur de textboxY
    la valeur de TextboxD sera la valeur de - (TextboxA)/2

    Si valTextboxA <= 0
    la valeur contenue dans une textboxC sera "0.00"
    la valeur de TextboxD sera "0.00"

    j'ai donc fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Public Class form2
        Private ValA As Double 'je dim mes variables
        Private ValB As Double
        Private ValC As Double
        Private ValD As Double
     
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    C.Text = ""  'Au lancement les textbox C et D sont vides 
    D.Text = ""
    End Sub
     
    Private Sub Calcul()
    'Calcul en fonction de A
    If valA <= 0 Then
          ValC = 0
          C.Text = "0.00"
          D.Text = "0.00"
    Else 'donc si valA > 0          
          valC = valB - valA
          C.Text = valC.ToString("0.00") 'Affichage de C
          valD = -(valC / 2) 'calcul de D = -C / 2
          D.Text = valD.ToString("0.00") 'Affichage de D
    End If
    End Sub
     
    Private sub buttoncalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttoncalculate.Click
    Call Calcul() ' j'appelle calcul
    End Sub
    End Class
    Malheureusement quelles que soient les données affichées, j'ai toujours a l'affichage, valC = "0.00" et valD = "0.00"

    J'ai bien verifié, les valeurs contenues dans les textbox A et B sont bonnes
    Celles initiales de textboxC et D etant = "0.00" quelque chose ne fonctionne pas dans l'affichage ou le calcul mais quoi ?????

    Un gros merci pour l'aide

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 70
    Points : 75
    Points
    75
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C.Text = valC.ToString("0.00")
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C.Text = CStr(valC)
    'ou bien
    C.Text = valC.ToString()
    Je saisis pas comment fonctionne ta ligne, mais je pense que ton problème vient de la, dis moi si je me trompe

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    je viens d'essayer tes 2 propositions, rie ne change
    toujours 0.00

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 680
    Points : 1 183
    Points
    1 183
    Par défaut
    Bonsoir,
    si là est tout ton code de Form2, on ne voit pas où tes variables sont initialisées.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Points : 168
    Points
    168
    Par défaut
    Tu ne pourra avoir que ValA= 0, valB = 0, valc et valD =0

    comment veux tu avoir val A#0 alors que tu ne lui donne aucune valeur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Private ValA As Double 'je dim mes variables
        Private ValB As Double
        Private ValC As Double
        Private ValD As Double
    cela veut dire en vb.net que valA =0, ValB= 0 ..... initialisation à zero automatiquement

    alors, si tu veux récupérer tes valeurs dans une autre form, tu dois déclarer tes variable dans un module.

    Malheureusement quelles que soient les données affichées, j'ai toujours a l'affichage, valC = "0.00" et valD = "0.00"
    elles sont affichées où tes données?
    si valA= à la valeur contenue dans ton textboxA alors tu dois les récupérer, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Sub Calcul()
    'Calcul en fonction de A
    valA=Cdbl(me.textboxA.text) 'idem pour valb, valc etc...
          ValC = 0
          C.Text = "0.00"
          D.Text = "0.00"
    Else 'donc si valA > 0          
          valC = valB - valA
          C.Text = valC.ToString("0.00") 'Affichage de C
          valD = -(valC / 2) 'calcul de D = -C / 2
          D.Text = valD.ToString("0.00") 'Affichage de D
    End If
    End Sub

  6. #6
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonjour,

    À aucun moment tu ne fais le lien entre valA et le contenu de TextBoxA, donc elle aura toujours 0 comme valeur ; idem avec B

    Après un petit passage par Double.TryParse serait nécessaire dans le cas où les saisies dans les TextBox ne sont pas des nombres (ou utiliser un autre type de contrôle, par exemple des NumericUpDown avec DecimalPlaces fixé à 2)

    Si les textBox C et D n'ont aucun Text dans le designer, pas besoin de réinitialiser leur Text dans le Form_Load, ce sera déjà leur valeur par défaut
    De même Pas besoin d'écrire Call devant l'appel à Calcul, ça marche aussi bien sans (et les programmeurs sont fainéants )

    Enfin, il serait judicieux de songer à nommer ses variables et contrôles d'une manière plus explicite quant à leur fonction, nous lecteurs on ne voit pas forcément à quoi sert un contrôle qui se nomme C ou une variable qui se nomme ValD, et il en sera sûrement de même pour toi, si tu reprends ton code quelques temps après l'avoir laissé de côté

    Cordialement !

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    merci a tous
    tout fonctionne tres bien
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [bug] Mais pourquoi il encode toujours.
    Par llaffont dans le forum MkFramework
    Réponses: 6
    Dernier message: 01/09/2015, 19h52
  2. Réponses: 427
    Dernier message: 15/02/2009, 16h38
  3. [JavaScript] [FAQ] Mais pourquoi faut-il toujours déclarer ses variables ?
    Par Auteur dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/01/2009, 21h08
  4. [asio] Pourquoi in_avail renvoie toujours 0 ?
    Par Sunsawe dans le forum Boost
    Réponses: 6
    Dernier message: 16/07/2008, 00h37
  5. [C#/DataView] Pourquoi mon tri ne donne pas le resultat escompté ?
    Par Low-Fi dans le forum Accès aux données
    Réponses: 1
    Dernier message: 12/08/2006, 23h15

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