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
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.
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.
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.
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
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.
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.
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
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