Calculatrice

Description

Encore une...pfff.
Bon je m'explique : Après l'évènement, l'objet ! Sachant qu'un objet...bref.
merci de rester courtois !! @+

Source / Exemple :


Option Explicit
                        '--------------
'------------------------
Dim sngCurNum           As Single   'le chiffre actuel
Dim sngContainer        As Single   'le chiffre précédent
Dim strPreviousOp       As String   'l'opérande précédente
Dim actionVirgule       As Boolean  'chiffre à décimal ??
Dim lngDecimal          As Long     'profondeur de la décimal !!
Dim sngPreviousResult   As Single   'et l'ancien résultat ??
'------------------------
Private Sub cmdFin_Click()
    Unload Me '
End Sub

'------------------------
Private Sub Form_Load()
    txtResult.Text = sngCurNum '>----zéro car non initialisé
    lngDecimal = 10 '>---------------première position de décimal
    Debug.Print ""
End Sub
'------------------------
Private Sub cmdC_Click()
    '----
    sngCurNum = 0 '>-----------------on réinitialise tout
    sngContainer = 0                                    '
    sngPreviousResult = 0                               '
    strPreviousOp = ""                                  '
    txtResult.Text = sngCurNum                          '
    lngDecimal = 10                                     '
    txtsngCurNum.Text = sngCurNum                       '
    txtsngContainer.Text = sngContainer                 '
    txtOperateur.Text = strPreviousOp                   '
    '---------------------------------------------------'
End Sub
'------------------------
Private Sub cmdCE_Click() '>-----Et le dernier resultat??
    sngCurNum = sngPreviousResult                       '
    sngContainer = 0                                    '
    strPreviousOp = ""                                  '
    txtResult.Text = sngCurNum                          '
    txtsngCurNum.Text = sngCurNum                       '
    txtsngContainer.Text = sngContainer                 '
    '---------------------------------------------------'
End Sub
'------------------------
Private Sub cmdOps_Click(Index As Integer)
    txtsngCurNum.Text = sngCurNum
    txtsngContainer.Text = sngContainer
    '----
    actionVirgule = False
    lngDecimal = 10
    On Error GoTo erreurs
    '----
    If strPreviousOp = "" Then
        sngContainer = sngCurNum '>contenu de l'affichage dans variable
    Else
        Select Case strPreviousOp '>mettre le resultat dans sngContainer
            Case "="
                sngPreviousResult = sngContainer
                strPreviousOp = ""
            Case "+"
                sngContainer = sngContainer + sngCurNum
            Case "-"
                sngContainer = sngContainer - sngCurNum
            Case "*"
                sngContainer = sngContainer * sngCurNum
            Case "/"
                sngContainer = sngContainer / sngCurNum
        End Select
        '----
        '----
        txtOperateur.Text = strPreviousOp
    End If
erreurs:
    If Err.Number = 11 Then
        MsgBox "division par zéro", vbCritical, "Erreur"
        cmdC_Click
        Err.Clear
        Exit Sub
    End If
    '----
    sngCurNum = 0
    '----
    Select Case Index
        Case 0 '>---------------------------egale
            strPreviousOp = "="
        Case 1 '>---------------------------addition
            strPreviousOp = "+"
        Case 2 '>---------------------------soustraction
            strPreviousOp = "-"
        Case 3 '>---------------------------multiplication
            strPreviousOp = "*"
        Case 4 '>---------------------------division
            strPreviousOp = "/"
    End Select
    txtOperateur.Text = strPreviousOp
    txtResult.Text = sngContainer
End Sub
'------------------------
Private Sub cmdNum_Click(Index As Integer)
    If actionVirgule = False Then
        sngCurNum = (sngCurNum * 10) + Index
    Else
        sngCurNum = sngCurNum + Index / lngDecimal
        lngDecimal = lngDecimal * 10
    End If
    txtResult.Text = sngCurNum
End Sub
'------------------------
Private Sub cmdVirgule_Click() '>----Virgule
    actionVirgule = True
End Sub
'------------------------
Private Sub cmdPourcentage_Click() '>Pourcentage
    '----
    sngCurNum = (sngContainer + (sngContainer * sngCurNum / 100)) - sngContainer
    '----
    txtResult.Text = sngCurNum
    '----
End Sub
'------------------------

Conclusion :


...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.