Vb6 probléme de calcul

Signaler
Messages postés
83
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
3 août 2013
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour
Veuillez s'il vous plait m'aider à modifier ces codes et je vous serais trés reconnaissant.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text2.Text = Val(Text1.Text)
End If
End Sub

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', normallement 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

11 réponses

Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
ICONIC FIGURE

Sans t'offenser,est ce que tu comprends ce que ton code doit donner à l'exécution?
parce que quand tu mets une valeur 5 par exemple sur le text1 et qu'ensuite tu appuies sur 'Entrée' c'est normal que le text2 et le text3 aient la valeur 5 puisque jusque là valeur du text3 est 0...à moins que je ne comprenne pas ce que tu dis.
Messages postés
83
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
3 août 2013

non; je met 5 et j'appuie sur entree et puis je rentre un autre 5 et j'appuie encore sur entree qui deverais normalement donner un resultat de 10 (5+5).alors que le code ne donne pas ce résultat sur text3. je trouve 5.
Messages postés
34
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
19 juillet 2010

Salut,
le problème vient que tu laisses la valeur '5' dans text2 et que ton action ne s'exécute que lorsque la valeur de 2 change. tu devrais plutôt l'exécuter lorsque tu presses sur la touche entrée.
Messages postés
151
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
19 avril 2016

Salut. Voici une proposition.
Je ne sais pas de façon précise ce que tu attends, j'espère en tous cas t'apporter un éclaircissement.
Bon courage

bab


'Dans cet exemple, 3 textbox sont créés dans un form, et leur contenu effacé au lancemant du programme.
' text1 reçoit une succession de touches (numériques seulement)
' dès la saisie d'un CR, (chr(13) :
' text3 cumule toutes l'entrée de text1,
' text2 affiche la derniére entrée de text1,
' et text1 est effacé.
' Reste à prévoir un effacement de text3....

Option Explicit
Dim R
Private Sub form_load()
Text3.Text "": Text2.Text "": Text1.Text = ""
End Sub
Private Sub Text2_Change()
Text3.Text = Val(Text2.Text) + R
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode 13 Then R Val(Text3.Text): Text2.Text = Text1.Text: Text1.Text = "" 'touche Cr
End Sub
Messages postés
34
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
19 juillet 2010

Attention Bab, si il effectue 2 fois l'action avec, à chaque fois la même valeur pour text2 alors la fonction Text2_Change() ne s'effectuera pas une seconde fois. Enfin si je ne me trompe pas.
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut
Le problème est pourtant simple
si tu rentre 5 la 1° fois cela t'affichera bien 5
Si tu rentre 5 la 2° fois et vu que la valeur n'a pas changée le (5 + 5) ne se fait pas
Par contre si tu rentres 5 puis 4 la valeur ayant changée le (5 + 4) se fait et l'addition se fait correctement


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Salut,

Galain a raison : la procédure Change fait son boulot : si la valeur de Text2 n'a pas changé, elle n'exécute rien!

Alors pourquoi l'associer à l'objet Text2
Private Sub Text2_Change()


plutôt que, par exemple
Private Sub Text2_Enter()



A+
Rataxes64
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
ICONIC FIGURE

tu peux régler ton soucis en te débarrassant de l'évènement 'change' du text2 et tu mets tout dans le KeyPress du text1.ça donnerait ceci:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text2.Text = Val(Text1.Text)
Text3.Text = Val(Text2.Text) + Val(Text3.Text)
End If
End Sub
Messages postés
355
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
15 juin 2019
9
Utise des Variable sque tu dois initialiser par rapport aux textBox:
Dans un commandButton
dim A , B
A=Val(Text1.Text) : B=Val(Text2.Text)
text3.Text=A+B


Hornel Lama
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

Apprends à te servir du debugger (debogger)
met un point d'arret(F9)à la ligne
Text3.Text = Val(Text2.Text) + Val(Text3.Text)


lances ton prog
met 5 dans text1 et Enter
la ligne
Text3.Text = Val(Text2.Text) + Val 
va etre marquée en jaune
verifie la valeur de Val(Text3.Text) 
tu vas voir que 
text3.TEXT = "" 

c'est peut tout simplement
[code=vb]Private Sub Text2_Change()
Text3.Text = Val(Text2.Text) + Val(Text1.Text)
End Sub
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

Apprends à te servir du debugger (debogger)
met un point d'arret(F9)à la ligne

Text3.Text = Val(Text2.Text) + Val(Text3.Text)


Lances ton prog
met 5 dans text1 et Enter
la ligne
Text3.Text = Val(Text2.Text) + Val(Text3.Text)

va etre marquée en jaune
Verifie la valeur de Val(Text3.Text)
tu vas voir que
text3.TEXT = ""

c'est peut etre tout simplement

[code=vb]Private Sub Text2_Change()
Text3.Text = Val(Text2.Text) + Val(Text1.Text)
End Sub