Vb6 probléme de calcul

omartt Messages postés 83 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 3 août 2013 - 18 juil. 2010 à 23:18
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 5 déc. 2011 à 17:42
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

NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
19 juil. 2010 à 00:04
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.
0
omartt Messages postés 83 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 3 août 2013
19 juil. 2010 à 01:03
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.
0
Xiotos Messages postés 34 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 19 juillet 2010
19 juil. 2010 à 08:48
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.
0
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016
19 juil. 2010 à 08:50
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Xiotos Messages postés 34 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 19 juillet 2010
19 juil. 2010 à 08:54
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.
0
Profil bloqué
19 juil. 2010 à 11:32
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
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
19 juil. 2010 à 18:15
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
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
19 juil. 2010 à 18:31
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
0
DevLama Messages postés 356 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 18 novembre 2021 10
5 déc. 2011 à 17:11
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
5 déc. 2011 à 17:38
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
5 déc. 2011 à 17:42
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
0
Rejoignez-nous