Mode graphique calculatrice

Résolu
cs_gabkiel Messages postés 22 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 6 janvier 2010 - 30 nov. 2008 à 18:50
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 30 nov. 2008 à 20:03
Bonjour,
Je voudrais un peu d'aide ,quelques idées pour me permettre de réaliser le mode graphique de ma calcultrice.
J'ai déjà fait ce code :
Dim nb2 As String 'premier nombre'
Dim nb1 As String 'deuxième nombre'
Dim premiernb As Boolean 'variable déterminant si l'utilisateur saisit le premier ou le deuxième nombre'
Dim chaine As String 'chaine de nombre et chiffre'
Dim signe As String 'variable détermninant le type d'opération qui doit être effectuée'
Dim longueur As Integer 'longueur de la chaine de nombre'
Dim mem1 As String 'différentes mémoires de la calculatrice'
Dim mem2 As String
Dim mem3 As String
Dim mem4 As String
Dim result As String 'resultat des calculs'

Private Sub BT_0_Click()
ajouterChiffre ("0") 'appel de la fonction ajouterChiffre et renvoi du chiffre saisi par l'utilisateur'
End Sub

Private Sub BT_1_Click()
ajouterChiffre ("1")
End Sub

Private Sub BT_2_Click()
ajouterChiffre ("2")
End Sub

Private Sub BT_3_Click()
ajouterChiffre ("3")
End Sub

Private Sub BT_4_Click()
ajouterChiffre ("4")
End Sub

Private Sub BT_5_Click()
ajouterChiffre ("5")
End Sub

Private Sub BT_6_Click()
ajouterChiffre ("6")
End Sub

Private Sub BT_7_Click()
 ajouterChiffre ("7")
End Sub

Private Sub BT_8_Click()
ajouterChiffre ("8")
End Sub

Private Sub BT_9_Click()
 ajouterChiffre ("9")
 End Sub

Private Sub BT_cosinus_Click()
chaine = Cos(CDbl(chaine))
TB_resultat = chaine
nb1 = TB_resultat
nb2 = 0

End Sub

Private Sub BT_diviser_Click()
signeclick ("diviser")
'appel de la fonction signeclick et renvoi de l'opérateur'
End Sub

Private Sub BT_eff1_Click()
mem1 = ""
End Sub

Private Sub BT_eff2_Click()
mem2 = ""
End Sub

Private Sub BT_eff3_Click()
mem3 = ""
End Sub

Private Sub BT_eff4_Click()
mem4 = ""
End Sub

Private Sub BT_effacer_Click()
   longueur = Len(chaine) 'détermination de la longueur de la chaine de nombre'
  If longueur = 0 Then
   MsgBox (" il n'y a rien à effacer !")
  Else
   chaine = Left(chaine, (longueur - 1)) 'suppression du dernier chiffre de la chaine de nombre'
  End If
If (premiernb = True) Then
    nb1 = chaine
    TB_resultat = chaine
Else
    nb2 = chaine
    TB_resultat = chaine
End If
'si aucun signe n'est saisi le nombre un prends la valeure de la chaine (sinon le nombre deux),on affiche sur l'ecran de la calculatrice le nouveau nombre)'
End Sub

Private Sub BT_egale_Click()
'différents opérations selon la variable signe'
Select Case (signe)
    Case "ajouter":
      TB_resultat = CDbl(nb1) + CDbl(nb2)
    Case "soustraire":
      TB_resultat = (nb1) - (nb2)
      result = (nb1) - (nb2)
    Case "diviser":
      If nb2 = 0 Then
       MsgBox ("La division par 0 est impossible")
      Else
       TB_resultat = (CDbl(nb1)) / (CDbl(nb2))
       result = (CDbl(nb1)) / (CDbl(nb2))
      End If
    Case "multiplier":
      TB_resultat = (nb1 * nb2)
      result = (nb1 * nb2)
    Case "puissance":
      TB_resultat = (nb1) ^ (nb2)
      result = (nb1) ^ (nb2)
    End Select
BT_plus.Enabled = True
BT_moins.Enabled = True
BT_multiplier.Enabled = True
BT_diviser.Enabled = True
BT_plus.Enabled = True
BT_puissance.Enabled = True
BT_racine.Enabled = True
BT_racubique.Enabled = True
BT_inverse.Enabled = True
nb1 = TB_resultat
nb2 = 0

End Sub

Private Sub BT_fermer_Click()
Unload Me
End Sub

Private Sub BT_inverse_Click()
chaine = 1 / (chaine)
TB_resultat = chaine
nb1 = TB_resultat
nb2 = 0
End Sub

Private Sub BT_m1_Click()
TB_resultat = mem1
If (premiernb = True) Then
    nb1 = mem1

Else
    nb2 = mem1
End If
End Sub

Private Sub BT_m2_Click()
TB_resultat = mem2
If (premiernb = True) Then
    nb1 = mem2

Else
    nb2 = mem2
End If
End Sub

Private Sub BT_m3_Click()
TB_resultat = mem3
If (premiernb = True) Then
    nb1 = mem3

Else
    nb2 = mem3
End If
End Sub

Private Sub BT_m4_Click()
TB_resultat = mem4
If (premiernb = True) Then
    nb1 = mem4

Else
    nb2 = mem4
End If
End Sub

Private Sub BT_memoire1_Click()
mem1 = result

End Sub

Private Sub BT_memoire2_Click()
mem2 = result

End Sub

Private Sub BT_memoire3_Click()
mem3 = result

End Sub

Private Sub BT_memoire4_Click()
mem4 = result

End Sub

Private Sub BT_moins_Click()
signeclick ("soustraire")
End Sub

Private Sub BT_multiplier_Click()
signeclick ("multiplier")
End Sub

Private Sub BT_plus_Click()
signeclick ("ajouter")
End Sub

Private Sub BT_puissance_Click()
signeclick ("puissance")
End Sub

Private Sub BT_racine_Click()
chaine = Sqr(chaine)
TB_resultat = chaine
nb1 = TB_resultat
nb2 = 0
End Sub

Private Sub BT_racubique_Click()
chaine = chaine ^ (1 / 3)
TB_resultat = chaine
nb1 = TB_resultat
nb2 = 0
End Sub

Private Sub BT_signe_Click()
  ajouterChiffre ("-")
'nombre positif ou négatif'
 
End Sub

Private Sub BT_sin_Click()
chaine = Sin(CDbl(chaine))
TB_resultat = chaine
nb1 = TB_resultat
nb2 = 0
End Sub

Private Sub BT_tan_Click()
chaine = Tan(CDbl(chaine))
TB_resultat = chaine
nb1 = TB_resultat
nb2 = 0
End Sub

Private Sub BT_virgule_Click()
ajouterChiffre (",")
End Sub

Private Sub CMD_effacertout_Click()
 'remet la calculatrice a l'état initial'
 nb2 = 0
 nb1 = 0
 premiernb = True
 chaine = ""
 signe = ""
 TB_resultat = ""
 BT_plus.Enabled = True
BT_moins.Enabled = True
BT_multiplier.Enabled = True
BT_diviser.Enabled = True
BT_plus.Enabled = True
BT_puissance.Enabled = True
BT_racine.Enabled = True
BT_racubique.Enabled = True
BT_inverse.Enabled = True
End Sub

Private Sub Form_Load()
mem1 = ""
mem2 = ""
mem3 = ""
mem4 = ""
result = ""
nb2 = 0
nb1 = 0
premiernb = True
chaine = ""
signe = ""
TB_resultat = ""
End Sub

Private Sub ajouterChiffre(chiffreajouter As String)
'fonction qui gère l'ajout des chiffres  saisi dans la variable chaine en utilisant la variable chiffreajouter'
chaine = chaine + chiffreajouter
If (premiernb = True) Then
    nb1 = (chaine)
    TB_resultat = chaine
Else
    nb2 = (chaine)
    TB_resultat = chaine
End If
End Sub

Private Sub signeclick(signeajouter As String)
'fonction qui gère l'opérateur en fonction de la variable signeajouter'
premiernb = False
chaine = ""
TB_resultat = ""
signe = signeajouter
BT_plus.Enabled = False
BT_moins.Enabled = False
BT_multiplier.Enabled = False
BT_diviser.Enabled = False
BT_plus.Enabled = False
BT_puissance.Enabled = False
BT_racine.Enabled = False
BT_racubique.Enabled = False
BT_inverse.Enabled = False
End Sub

J'ai déjà intégré la fonction sinus cosinus tan en radian et je cherches maintenant à passer au mode graphique,
merci de votre aide
gab

1 réponse

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 nov. 2008 à 20:03
salut,

regarde dans les (trop) nombreuses sources existantes

ps : les GROUPES DE CONTRÔLES t'éviteront une telle redondance de code
++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
3
Rejoignez-nous