XL 2019 Problème calcul % sur calculatrice

  • Initiateur de la discussion Initiateur de la discussion Nathe
  • 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 !

Nathe

XLDnaute Junior
Bonjour à toutes et tous,

Je suis en train d'essayer de monter un projet calculatrice sur excel mais je peine sur l'adaptation du calcul du pourcentage,
Si une personne saurai comment effectué le code qui irai bien.

Merci à tous
Nathe

Animation.gif
 

Pièces jointes

allez pour te faciliter la tache en attendant que je te trouve le bon code pour le freewrite

je t'ai donc ajouté un bouton "encapsule" pour mettre entre parenthèses a postériori

ça risque d'être long quand même le control de saisie mais en attendant les parenthèses a postériori facilite pas mal quand même

c'est pas mal ça, si vous commencez par une encapsule, vous pouvez pas intégrer les chiffre directement dedans, ils vont à droite de l'encapsule, et qu'entendez vous par le freewrite ?
 
le freewrite c'est exactement ce que tu viens de dire pouvoir insérer dans la formule
mais c'est pas du tout le même code c'est bien plus complexe
petite correction au cas ou tu selectionne un operateur en premier caractère pour l'encapsulation
VB:
Private Sub encapsule_Click()
    Dim v$, x&, l&
    With txtExpression
        v = .Text
        x = .SelStart
        l = .SelLength

        If x = 0 Then
            v = "(" & Left(v, l) & ")" & Mid(v, l + 1)
        Else
            v = Mid(v, 1, x) & "(" & Mid(v, x + 1, l) & ")" & Mid(v, x + 1 + l)
        End If
        v = Replace(Replace(Replace(v, "(x", "x("), "(+", "+("), "(/", "/(")
        .Value = v
        expression = v
    End With
End Sub
je ne l'ai pas fait pour le "-" pour que tu puisse faire des calculs avec des nombres negatifs
1740349835264.png
 
Hello,
😢 Snif ! Patricktoulon et Nathe n'ont pas répondu à ma question du post #31 :
Cela ne fonctionne pas sous quel Excel et quel O.S ? Et quel est le message complet du TimeOut ?
Quand quelque chose ne fonctionne pas, j'aime bien comprendre pourquoi.
Question bête -> Avez bien lancé la calculatrice Windows avant de lancer la calculatrice de Nathe ?
Sinon voici le code à remplacer dans mon classeur pour lancer la calculatrice Windows si elle n'est pas lancée :
VB:
Sub InitBoutons()
Dim c As New CUIAutomation, oCalc As IUIAutomationElement, Dico As Object
Dim oDesktop As IUIAutomationElement, oBtn As IUIAutomationElement
Dim oPane As IUIAutomationElement, oEdit As IUIAutomationElement
Set oDesktop = c.GetRootElement
Set oCalc = WaitForUiElem(c, oDesktop, "Name", "Calculatrice", _
                            TreeScope_Children, 1) ' Recherche de la fenêtre Calculatrice
If oCalc Is Nothing Then
    Shell "Calc.exe", vbNormalFocus
    Set oCalc = WaitForUiElem(c, oDesktop, "Name", "Calculatrice", _
                            TreeScope_Children, 2)
    Me.txtValeur.SetFocus
End If
Set DicoBtns = DicoUIAelems(c, oCalc)
'Set oBtn = DicoBtns("Effacer")
'GetIacc(oBtn).DoDefaultAction
End Sub

Concernant les priorités des opérateurs voici ce que me dit Léo la tête pensante de Brave :
Dans une formule de calculatrice, le pourcentage (%) est traité avec une certaine priorité. Il est classé après l'exponentiation (^), la multiplication et la division (* et /), et avant l'addition et la soustraction (+ et -). Par exemple, dans une formule contenant un pourcentage, Excel effectue d'abord les opérations de multiplication et de division avant de traiter le pourcentage.
Si vous utilisez des opérateurs de même priorité dans la même formule, Excel effectue les opérations de gauche à droite.
Par exemple, si vous avez une formule comme 3+50%*10, Excel calcule d'abord 50%*10 avant d'ajouter le résultat à 3. Cela signifie que la formule est équivalente à 3+0.5*10, ce qui donne un résultat de 8.
3+50%*10=3+0.5*10=3+5=8
Les opérations doivent toujours être effectuées dans l'ordre suivant:
Les Parenthèses.
Les Exposants (puissances).
Les Multiplications et Divisions.
Les Additions et Soustractions.
La 1ère lettre de chaque opération forment ensemble le mot PEMDAS.
Il suffit donc de mémoriser le mot PEMDAS pour se souvenir à tout moment de l'ordre des opérations.
Donc avec le pourcentage on pourrait mémoriser par exemple PEMDPoAS
N'importe comment quand on ne connaît pas les priorités ou qu'on a un doute, on utilise les parenthèses pour assurer.

Ami calmant, J.P
 
Hello,
😢 Snif ! Patricktoulon et Nathe n'ont pas répondu à ma question du post #31 :

Quand quelque chose ne fonctionne pas, j'aime bien comprendre pourquoi.
Question bête -> Avez bien lancé la calculatrice Windows avant de lancer la calculatrice de Nathe ?

Bonjour, oui j'avais mal compris, en lançant la calculatrice windows ça fonctionne. Nathe
 
re
Bonjour à tous

Si vous utilisez des opérateurs de même priorité dans la même formule, Excel effectue les opérations de gauche à droite.
c'est bien ça le problème
toutes les calculettes window,google,et même sur des sites , ne respectent pas cette règle
20+10+30%
il l'interprète tous comme 20+(10+30%) soit 33
c'est pas un calcul de gauche à droite ça
d'ailleurs quand il me donne 33 c'est un résultat faux ça devrait être à minima 33.33333......

@Nathe
oui là tu t'engage dans un truc de fou d'ailleurs ton analyse de segment est fausse 25% c'est pas 0.3
c'est 0.4 me semble t-il

je pense qu'avant de proposer l’analyse tu devrait travailler sur le control de saisie
et dieu sait que même là en vba c'est coton
 
re
ou tu a raison @Nathe 4 c'est la division c'est bien 0.25 (+1 en positif )
j'ai bien l'intention de reprendre le projet
en commençant par le contrôle de saisie et validation a chaque touches cliqué
ainsi que l'insertion
cela sera je pense un grand pas
après la décomposition on verra

je vais d'abords le faire par les touches réelles du clavier ( que je maitrise assez bien) et je transfèrerais sur les touches virtuelles de l'interface
il m'est venu une idée aussi c'est de transformer dès la saisie de "%"
par exemple
+10,5% en +(1+(10.5/100)) directement dans l'affichage de la formule ou un textbox caché et evaluer celui ci plutôt que celui affiché
pourquoi
ben ça éviterait de reprendre la chaine de la formule pour la reconditionner
bref ce truc est intéressant quand même
 
re
ou tu a raison @Nathe 4 c'est la division c'est bien 0.25 (+1 en positif )
j'ai bien l'intention de reprendre le projet
en commençant par le contrôle de saisie et validation a chaque touches cliqué
ainsi que l'insertion
cela sera je pense un grand pas
après la décomposition on verra

je vais d'abords le faire par les touches réelles du clavier ( que je maitrise assez bien) et je transfèrerais sur les touches virtuelles de l'interface
il m'est venu une idée aussi c'est de transformer dès la saisie de "%"
par exemple
+10,5% en +(1+(10.5/100)) directement dans l'affichage de la formule ou un textbox caché et evaluer celui ci plutôt que celui affiché
pourquoi
ben ça éviterait de reprendre la chaine de la formule pour la reconditionner
bref ce truc est intéressant quand même

Re, si vous souhaitez vous amuser repartez de cette base si pas trop tard, à plus tard,
Après c'est comme vous voulez, Nathe
 

Pièces jointes

Dernière édition:
- 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
17
Affichages
802
Réponses
9
Affichages
345
  • Question Question
Microsoft 365 Formulaire
Réponses
2
Affichages
117
Retour