• Initiateur de la discussion Initiateur de la discussion Lone-wolf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Calculatrice en VBA

Bonjour
Ceci, peut-être ?
Code:
[COLOR="DarkSlateGray"][B]Private Sub cmdPrc_Click()
   flagefface = 0
   If flagtf > 0 Then Call calcul
   flagtf1 = 0
   flagtf = 5
End Sub

Private Sub calcul()
   Select Case flagtf
   Case 1
      valeur1 = txtResultat.Value
      valeur = valeur + valeur1
      txtResultat.Value = valeur
   Case 2
      valeur1 = txtResultat.Value
      valeur = valeur - valeur1
      txtResultat.Value = valeur
   Case 3
      valeur1 = txtResultat.Value
      valeur = valeur * valeur1
      txtResultat.Value = valeur
   Case 4
      valeur1 = txtResultat.Value
      If valeur1 > 0 Then
         valeur = valeur / valeur1
         txtResultat.Value = valeur
      End If
   Case 5
      valeur1 = txtResultat.Value
      valeur = valeur * valeur1 / 100
      txtResultat.Value = valeur
   End Select
   flagv = 0
End Sub[/B][/COLOR]
ROGER2327
#3720


Vendredi 6 Gidouille 137 (Saint Dieu, retraité, SQ)
2 Messidor An CCXVIII
2010-W24-7T08:53:32Z
 
Re : Calculatrice en VBA

Bonjour Forum
Bonjour Lone-wolf
Bonjour ROGER2327
SVP j'ai essaye d'adapter cette calculatrice proposee par le cher membre Lone-wolf ..j'ai ajouté le code du pourcentage du cher membre ROGER2327 ..
SVP si vous pouvez m'indiquer où est le probleme ..j'ai bien tappe ces chiffres d'une facon succesive
12 * 50 et j'ai clique sur le commandbutton du poucentage alors le resultat s'affichera 600 ..la valeur juste est bien 6
Merci beaucoup d'avance pour me corriger ce probleme
Cordialement
MAA BLACK
 

Pièces jointes

Re : Calculatrice en VBA

Bonjour Madagascar,


Je pense avoir trouvé. Fait un test. Tu met des ' dans Case 5, ensuite copie ceci:

Code:
Private Sub cmdPrc_Click()
   flagefface = 0
   If flagtf > 0 Then: Call calcul: txtResultat.Value = txtResultat.Value / 100
   flagtf1 = 0
   flagtf = 5
End Sub

En PJ Calculatrice V2 (nouveau modèle)



A+ 😎
 

Pièces jointes

Dernière édition:
Re : Calculatrice en VBA

Bnjour Lone-wolf
Merci beaucoup pour l'aide
SVP si vous pouvez m'aidez a faire ce dernier truc
Pour calculer le pourcentage j'aimerai bien faire comme ca par exemple :
12 * 50 et apres je clique CommandButton% je vais obtenir 6
Merci beaucoup d'avance pour l'aide
Cordialement
MADA
Voir svp ce lien :
https://www.excel-downloads.com/threads/resolu-calculatrice-pourcentage.20005540/
 
Re : Calculatrice en VBA

Re,

C'est ce que fais le bouton %, il donne le résultat 6.

Prends le dernier fichier que j'ai mis et modifie

Code:
Private Sub cmdPrc_Click()
   flagefface = 0
   If flagtf > 0 Then
   Call calcul
   txtResultat.Value = txtResultat.Value / 100
   txtResultat.Value = Replace(txtResultat.Value, ",", ".")
   End If
   flagtf1 = 0
   flagtf = 5
End Sub


A+ 😎
 
Re : Calculatrice en VBA

RE MADAGASCAR,

Une nouvelle modification concernant les nombres comme 3.5%

Code:
Private Sub cmdPrc_Click()
   flagefface = 0
   If flagtf > 0 Then Call calcul
   If valeur > 10 Then 'exemple: 15 * 3.5%
   txtResultat.Value = valeur / 100
      txtResultat.Value = Replace(txtResultat.Value, ",", ".")
   End If
   flagtf1 = 0
   flagtf = 5
End Sub


A+ 😎
 
Re : Calculatrice en VBA

Bonjour Lone-wolf
Mes excuses pour le retard de reponse
Mauvaise connexion en plus j'ai reste plus d'une heure et malheureusement j'ai pas reussi
Votre calculatrice me plait beaucoup SVP cher membre si vous pouvez me mettre ces code dans ce fichier se sera un vrai grand plaisir de votre part
Merci beaucoup d'avance pour l'aide
Cordialement
MADA
 

Pièces jointes

Re : Calculatrice en VBA

Bonjour Lone-wolf, MADA,

Avec un Module de classe c'est quand même beaucoup plus simple.

Dans Module1 :

Code:
Dim CB() As New Classe1

Sub Ouvre()
Calculatrice.txtResultat = 0
Dim c As Control, n As Byte
For Each c In Calculatrice.Controls
  If TypeName(c) = "CommandButton" Then
    n = n + 1
    ReDim Preserve CB(1 To n)
    Set CB(n).CB = c
  End If
Next
Calculatrice.Show
End Sub
Dans le module de classe :

Code:
Public WithEvents CB As MSForms.CommandButton

Private Sub CB_Click()
Dim t$
t = Calculatrice.txtResultat
If CB.Caption = "CE" Then t = "": GoTo 1
If CB.Caption = "C" Then t = Left(t, Len(t) - 1): GoTo 1
If CB.Caption = "=" Then
  If Not t Like "*#" And Not t Like "*%" Then t = Left(t, Len(t) - 1)
  t = Replace(CStr(Evaluate(t)), ",", ".")
  If t Like "Err*" Then t = "E" 'si erreur
Else
  If t & CB.Caption Like "0#" Or t = "E" Then t = ""
  If Not IsNumeric(CB.Caption) And Not t Like "*#" And Not t Like "*%" Then Exit Sub
  t = t & CB.Caption
End If
1 If t = "" Then t = 0
Calculatrice.txtResultat = t
End Sub
La propriété Locked de la TextBox doit impérativement être à True.

Edit 1 : j'initialise la TextBox du résultat à zéro.

Edit 2 : utiliser Evaluate("=" & t) voir le post #19 avec l'histoire des boutons...

Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Calculatrice en VBA

Bonjour à tous.

@job: oui bien sûr que c'est mieux, mais ça serait bien si on éviterais d'afficher dans la textbox 2.25+2.25.
Malheureusement je suis nul avec les modules de classe.




A+ 😎
 
Dernière édition:
Re : Calculatrice en VBA

Re,

mais ça serait bien si on éviterais d'afficher dans la textbox 2.25+2.25.

Non c'est mieux d'afficher tout ce qu'on entre avant de cliquer sur = surtout si c'est long.

On voit ce que l'on a fait, cela diminue le risque d'erreur car on peut facilement corriger.

Bien sûr ce n'est pas ce que font les calculatrices de poche car elles ne sont pas capables d'évaluer une formule.

A+
 
Re : Calculatrice en VBA

Re,

Non c'est mieux d'afficher tout ce qu'on entre avant de cliquer sur = surtout si c'est long


Oui je comprends. Qu'est-ce que tu veux, on est tellement habitués avec ces machines. 🙁

EDIT: voilà, j'ai (pour test et fun) pris l'exemple de la calculatrice Windows 10.


Code:
Private Sub txtResultat_Change()
On Error Resume Next
If Me.txtResultat.Text = "0" Then
Me.Label1.Caption = ""
Else
Me.Label1.Caption = Evaluate(Me.txtResultat.Text)
End If
End Sub



A+ 😎
 
Dernière édition:
Re : Calculatrice en VBA

Re,

Un rappel du fonctionnement d'Excel pour les nombres.

Seuls les 15 premiers chiffres significatifs sont conservés ce qui peut donner un résultat erroné.

Par exemple le résultat de 1234567890123456-1234567890123455 est 0

Par ailleurs le résultat peut être au format scientifique, 1234567890123456 donne 1.23456789012345E+15

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
197
Réponses
8
Affichages
610
Réponses
15
Affichages
416
Réponses
3
Affichages
131
Réponses
4
Affichages
530
Retour