Code touche décimal calculatrice

Signaler
Messages postés
3
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 juillet 2011
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour,

J'ai écris un code pour une calculatrice en VB. Tous marche impacable excepté que je ne trouve pas le moyen de rentrer des valeurs décimales.
J'ai créé une touche "." dans mon interface et je souhaiterais savoir quel code lui attribuer?

merci

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,

tout dépend de ton mécanisme et de son code !
Et on ne connait ni l'un, ni l'autre !


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
3
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 juillet 2011

Voila pour le code mais qu'entends tu par mécanisme? (désolé je suis tout débutant en programmation)

Dim ValeurAffichée As Integer
Dim ValeurStockée As Integer
Dim opérateur As String
Private Sub Effectuer()
If opérateur = "" Then
ValeurStockée = ValeurAffichée
ElseIf opérateur = "+" Then
ValeurStockée = ValeurStockée + ValeurAffichée
ElseIf opérateur = "-" Then
ValeurStockée = ValeurStockée - ValeurAffichée
ElseIf opérateur = "*" Then
ValeurStockée = ValeurStockée * ValeurAffichée
ElseIf opérateur = "/" Then
ValeurStockée = ValeurStockée / ValeurAffichée
ElseIf opérateur = "^" Then
ValeurStockée = ValeurStockée ^ ValeurAffichée
ElseIf opérateur = "sqrt" Then
ValeurStockée = Math.Sqrt(ValeurStockée)
End If
LabelAffichage.Text = ValeurStockée
ValeurAffichée = 0
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub LabelAffichage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LabelAffichage.Click

End Sub

Private Sub CmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdAdd.Click
Effectuer()
opérateur = "+"
End Sub

Private Sub CmdSous_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdSous.Click
Effectuer()
opérateur = "-"
End Sub

Private Sub CmdClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdClear.Click
If ValeurAffichée = 0 Then
ValeurStockée = 0
opérateur = ""
Else
ValeurAffichée = 0
End If
LabelAffichage.Text = ValeurAffichée
End Sub

Private Sub CmdEgal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdEgal.Click
Effectuer()
opérateur = "="
End Sub

Private Sub CmdChiffre0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre0.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre1.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre2.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre3.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre4.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre5.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre6.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre7.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre8.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub
Private Sub CmdChiffre9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdChiffre9.Click
Dim Valeur As Long
Valeur = sender.text
ValeurAffichée = ValeurAffichée * 10 + Valeur
LabelAffichage.Text = ValeurAffichée
If opérateur = "=" Then opérateur = ""
End Sub

Private Sub CmdMultip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdMultip.Click
Effectuer()
opérateur = "*"
End Sub

Private Sub CmdDiv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdDiv.Click
Effectuer()
opérateur = "/"
End Sub

Private Sub CmdPuissance_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdPuissance.Click
Effectuer()
opérateur = "^"
End Sub

Private Sub Cmdpoint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmdpoint.Click

End Sub

Private Sub CmdSqrt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdSqrt.Click
Effectuer()
opérateur = "sqrt"
End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Pour comprendre ce dont je parle :
utilise le moteur de recherche de ce forum ===>> cherche avec mon pseudo et cherche avec les mots clavier virtuel ou clavier visuel ===>> tu tomberas sur une discussion assez récente et tu y verras un mécanisme et le code adapté à CE mécanisme


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Ah !
Je viens de voir enfin ton code ===>>
Mais ...
1) ce n'est pas du VB6 ! (mais du VB.Net que je ne pratique pas) !
2) cherche quand même la discussion dont je viens de te parler ===>> tu y verras une toute autre manière (universelle) de procéder. A adapter ensuite à VB.Net (ce sera plus dur car VB6 gère à l'aise, lui, ce que ne sait pas gérer SEUL VB.NBet ! (clin d'oeil aux VBnettistes détracteurs de VB6 )____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
3
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 juillet 2011

En effet c'est bien du VB.net.

Merci pour les informations! je vais regarder les discussion dont tu m'as parlé.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
utilise le double.parse
voila un petit ex de calculatrice
avec 10 boutons de 0 à 9
le bouton decimal et le bouton + et le bouton
=
Public Class Form1
    Private operand1 As String
    Private operand2 As String
    Private op As Boolean
    Private oper As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        operand1 = String.Empty
        operand2 = String.Empty
        oper = String.Empty
        op = False
End Sub
Private Sub Button0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button0.Click, Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click
        If Not op Then
            operand1 = String.Concat(operand1, DirectCast(sender, Button).Text)
            Labelresult.Text = operand1
        Else

            operand2 = String.Concat(operand2, DirectCast(sender, Button).Text)
            Labelresult.Text = operand2
        End If
End Sub
Private Sub Buttondec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttondec.Click
        If oper = String.Empty Then
            If Not operand1.Contains(".") Then
                operand1 = String.Concat(operand1, DirectCast(sender, Button).Text)
                Labelresult.Text = operand1
            End If
            Labelresult.Text = operand1
        Else
            If Not operand2.Contains(".") Then
                operand2 = String.Concat(operand2, DirectCast(sender, Button).Text)
                Labelresult.Text = operand2
            End If
        End If
        
    End Sub

    Private Sub Buttonplus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonplus.Click
        oper = DirectCast(sender, Button).Text
        Dim val1, val2 As Double
        If Not operand2 = String.Empty Then
            val1 = Double.Parse(operand1)
            val2 = Double.Parse(operand2)
            Labelresult.Text = (val1 + val2).ToString
            op = False
            operand1 = Labelresult.Text
            operand2 = String.Empty
        End If
        op = True
    End Sub

    Private Sub Buttonegale_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonegale.Click
        Dim val1, val2 As Double
        If op Then
            Select Case oper
                Case "+"
                    val1 = Double.Parse(operand1)
                    val2 = Double.Parse(operand2)
                    Labelresult.Text = (val1 + val2).ToString
            End Select
        End If
    End Sub
End Class