En fait quand on arrive dans ok_click, res a déjà la valeur du premier terme
Le pire c'est que tout marche très bien en "pas à pas" ou quand je met un point d'arrêt dans la procédure additionner le + marche très bienChez moi avec ton code, même en pas à pas, je reproduit l'erreur.
Sinon que pensez vous de l'ensemble,Beaucoup de choses seraient améliorable, mais c'est normal, tu es débutant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub Form1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated If plus True Or moins True Or fois = True Or div = True Then signe = True Else signe = False End Sub
Private Sub un_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles un.Click If dejaok True And signe False Then efface_Click(sender, e) calcul.Text = 1 Else calcul.Text = calcul.Text & 1 If signe False Then res res & 1 End If ok.Focus() End Sub
donc si je tape 2+3+4 calcul.text=5+4 et label.text=5 et quand j'appuie sur = les deux valent 9..
Public Class Form1 Dim dejapoint, dejaok, plus, moins, fois, div, signe As Boolean Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress If e.KeyChar = "1" Then Chiffre_Click(sender, e) If e.KeyChar = "2" Then Chiffre_Click(sender, e) If e.KeyChar = "3" Then Chiffre_Click(sender, e) If e.KeyChar = "4" Then Chiffre_Click(sender, e) If e.KeyChar = "5" Then Chiffre_Click(sender, e) If e.KeyChar = "6" Then Chiffre_Click(sender, e) If e.KeyChar = "7" Then Chiffre_Click(sender, e) If e.KeyChar = "8" Then Chiffre_Click(sender, e) If e.KeyChar = "9" Then Chiffre_Click(sender, e) If e.KeyChar = "0" Then Chiffre_Click(sender, e) If e.KeyChar = "+" Then additioner_Click(sender, e) If e.KeyChar = "-" Then soustraire_Click(sender, e) If e.KeyChar = "*" Then multiplier_Click(sender, e) If e.KeyChar = "/" Then diviser_Click(sender, e) If e.KeyChar = "." Then point_Click(sender, e) If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then ok_Click(sender, e) e.Handled = True End Sub 'Chargement de la fenêtre Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.KeyPreview = True dejapoint = False dejaok = False End Sub #Region "Clics sur les boutons" #Region "boutons chiffres" Private Sub Chiffre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles un.Click, _ deux.Click, trois.Click, quatre.Click, cinq.Click, six.Click, sept.Click, huit.Click, neuf.Click, zero.Click If dejaok True And signe False Then efface_Click(sender, e) If sender Is Me.un Then calcul.Text = calcul.Text & 1 If sender Is Me.deux Then calcul.Text = calcul.Text & 2 If sender Is Me.trois Then calcul.Text = calcul.Text & 3 If sender Is Me.quatre Then calcul.Text = calcul.Text & 4 If sender Is Me.cinq Then calcul.Text = calcul.Text & 5 If sender Is Me.six Then calcul.Text = calcul.Text & 6 If sender Is Me.sept Then calcul.Text = calcul.Text & 7 If sender Is Me.huit Then calcul.Text = calcul.Text & 8 If sender Is Me.neuf Then calcul.Text = calcul.Text & 9 If sender Is Me.zero Then calcul.Text = calcul.Text & 0 dejaok = False ok.Focus() End Sub Private Sub point_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles point.Click If dejapoint False Then calcul.Text calcul.Text & "." dejapoint = True ok.Focus() End Sub #End Region #Region "boutons signes" Private Sub additioner_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles additioner.Click If signe = True Then ok_Click(sender, e) calcul.Text = calcul.Text & "+" plus = True signe = True ok.Focus() End Sub Private Sub soustraire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles soustraire.Click If signe = True Then ok_Click(sender, e) calcul.Text = calcul.Text & "-" moins = True signe = True ok.Focus() End Sub Private Sub multiplier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles multiplier.Click If signe = True Then ok_Click(sender, e) calcul.Text = calcul.Text & "*" fois = True signe = True ok.Focus() End Sub Private Sub diviser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles diviser.Click If signe = True Then ok_Click(sender, e) calcul.Text = calcul.Text & "/" div = True signe = True ok.Focus() End Sub Private Sub efface_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles efface.Click calcul.Text = "" resultat.Text = "" dejapoint = False dejaok = False plus = False fois = False moins = False div = False ok.Focus() End Sub Private Sub ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ok.Click Dim res As Double Dim nb As Integer Dim terme() As String If plus = True Then terme = Strings.Split(calcul.Text, "+") 'récupere les termes du calcul nb = terme.Length 'nbre de termes res = Val(terme(0)) For i = 1 To nb - 1 res = res + Val(terme(i)) 'calcul Next End If If moins = True Then terme = Strings.Split(calcul.Text, "-") nb = terme.Length res = Val(terme(0)) For i = 1 To nb - 1 res = res - Val(terme(i)) Next End If If fois = True Then terme = Strings.Split(calcul.Text, "*") nb = terme.Length res = Val(terme(0)) For i = 1 To nb - 1 res = res * Val(terme(i)) Next End If If div = True Then terme = Strings.Split(calcul.Text, "/") nb = terme.Length res = Val(terme(0)) For i = 1 To nb - 1 res = res / Val(terme(i)) Next End If If res = 42 Then calcul.Text = "la réponse à la vie, l'univers, et tout le reste !" Else resultat.Text = res calcul.Text = res End If dejapoint = False dejaok = True signe = False plus = False fois = False moins = False div = False ok.Focus() End Sub #End Region #End Region Private Sub Form1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated If plus True Or moins True Or fois = True Or div = True Then signe = True Else signe = False End Sub End Class