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 6 et antérieur Discussion :

prolème de calcul avec vb6


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut prolème de calcul avec vb6
    Bonjour
    Veuillez s'il vous plait m'aider à modifier ces codes et je vous serais trés reconnaissant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
    Text2.Text = Val(Text1.Text)
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Text2_Change()
    Text3.Text = Val(Text2.Text) + Val(Text3.Text)
    End Sub
    Le problème ici est que si je mis '5' dans text1 puis je mis '5', normalement je dois obtenir '10' dans le text3; alors qu'avec ce code j'obtiens '5' puisque les valeurs sont semblables. Mais si je mis des valeurs differentes ( par exemple '4' puis '5', le code fonctionne bien.
    Comment faire pour que ce code soit fonctionnel même si les valeurs sont les mêmes.
    Merci

  2. #2
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Val (xxx) te donne une valeur numérique que tu affectes à un string, c'est pas trop catholique !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
    Text2.Text = Text1.Text
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Text2_Change()
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End Sub
    Ca devrait mieux marcher ..... (evidemment si Text2.text change)

    sinon il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
    Text2.Text = Text1.Text
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End If
    End Sub

  3. #3
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Si tu veux vraiment utiliser Text2_Change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
       Text2.Text =""
       Doevents
       Text2.Text = Text1.Text
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Text2_Change()
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End Sub

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    Merci pour la réponse assez vite
    Malheureusement ces codes ne marchent plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
    Text2.Text = Text1.Text
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Text2_Change()
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End Sub
    Pour ce code il y'a encore un petit problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
    Text2.Text = Text1.Text
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End If
    End Sub
    Si par exemple je mis '4' dans text1 et j'appuye sur 'entree' j'obtiens '8' sur text3 .
    merci encore pour votre aide

  5. #5
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par zidane2 Voir le message
    Si par exemple je mis '4' dans text1 et j'appuye sur 'entree' j'obtiens '8' sur text3 .
    il y avait quoi dans text3 avant?

    Rajoute KeyAscii = 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
    KeyAscii = 0
    Text2.Text = Text1.Text
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End If
    End Sub

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    Merci DAUDET78
    je vous suis trés reconnaissant!

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    Juste un tout petit problème avec les nombres décimaux si vous permettez.
    Il me parrait que si j'additionne des nombres décimaux, le code ne donne pas de bons résultats.
    Merci beaucoup

  8. #8
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par zidane2 Voir le message
    le code ne donne pas de bons résultats.
    Ca, c'est bien dommage pour toi .....
    • listing du code
    • exemple de valeurs entrées
    • exemple de résultats "erronés"

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    Si par éxemple je mets (1.5 + 1.5 ) il me donne 2.5 pas 3.
    je ne sais comment vous remercier pour ton aide précieuse DAUDET78.

  10. #10
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    tu peux donner ton code "actuel" (je t'avais donné deux ou trois solutions différentes !)

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    Voici le code actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
    KeyAscii = 0
    Text2.Text = Text1.Text
    Text3.Text = format$(Val(Text2.Text) + Val(Text3.Text))
    End If
    End Sub

  12. #12
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    C'est un problème de séparateur décimal. Windows affiche avec un "," et Val n'accepte que "."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Text1_KeyPress(KeyAscii As Integer)
     
    If KeyAscii = 13 Then
      KeyAscii = 0
      Text2.Text = Text1.Text
      Text3.Text = Replace(Text3.Text, ",", ".")
      Text3.Text = Format$(Val(Text2.Text) + Val(Text3.Text))
    End If
    End Sub
     
    Private Sub Text3_DblClick()
     Text3.Text = "" ' RAZ de Text3
    End Sub

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    C'est résolu

    Merci beaucoup
    Vraiment vous ètes un homme trés généreux.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    Salut DAUDET78
    C'est encore moi
    Désolé du déranngement mais je commence à ètre ambitieux!!!
    Je voudrai juste savoir s'il est possible de mettre ce code dans text1_change au lieu de Text1_KeyPress:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Text1_Change() 
     Text2.Text = Text1.Text
      Text3.Text = Replace(Text3.Text, ",", ".")
      Text3.Text = Format$(Val(Text2.Text) + Val(Text3.Text))
    End Sub
    J'ai essayé d'appliquer ça mais le problème est que lorsque je mets 15 dans text1, il me donne automatiquement 16 dans text3. Si j'ajoute 12, il me donne 30.
    Y'a t-il quelques trucs pour remedier ça? et je vous serais trés reconnaissant.

  15. #15
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Non, ce n'est pas possible et tu l'as bien vu.

    Il faut un ordre (le retour chariot ou un bouton ou un DoubleClic... enfin un signal!) pour dire au programme : J'ai bien rempli "Text1" avec une donnée valable, fais moi l'accumulation dans "text3"

  16. #16
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    merci
    c'est clair
    mais excusez_moi de vous demander sur le retour chariot . ma curiosité me pousse à poser cette question. C'est quoi retour chariot ?
    Je m'éxcuse encore.

  17. #17
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    La touche "Carriage Return" ou Entrée qui est codée 13 sur le clavier

  18. #18
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Points : 32
    Points
    32
    Par défaut
    million thanks

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

Discussions similaires

  1. connection base de données avec VB6
    Par 24 faubourg dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/11/2005, 20h03
  2. Faire du calcul avec la valeur d'un élément/attribut
    Par camboui dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 03/11/2005, 16h10
  3. [CR9] Installation avec VB6
    Par eagleleader dans le forum SDK
    Réponses: 1
    Dernier message: 11/07/2005, 09h55
  4. Réponses: 2
    Dernier message: 22/03/2004, 10h50
  5. [VB6] Gestionnaire des tache de windows 2000 avec VB6
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/11/2002, 08h21

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