Poser les opérations élémentaires dans une même cellule et le résultat dans une autre

0

Bonjour.

J'ai une grosse épine au pied. Je suis en train d'essayer de me faciliter la tâche pour ne pas avoir à faire des opérations sur une calculatrice et les reporter ensuite sur excel. Il s'agit de faire un métré de bâtiment avec afficher, les détails de calculs.

Ex en A1 : (2,50+(6,20/2))*2 et en B1: = 11,20 

Le résultat obtenu doit pouvoir s'additionner ou se soustraire à un autre résultat en dessous

Ex en A1 : (2,50+(6,20/2))*2 et en B1: = 11,20

                  Déduire        

                  2,00+1,50           et en B3: =  3,50 Total = 7,70

Ceci dit, j'aimerai poser de manière aléatoire les opérations mathématiques élémentaires (+,-,x,:)

Voilà j'espère vraiment que c'est faisable, cela fait déjà 3 jours que je cherche.

Merci par avance pour votre temps.

pilbert Posté le 25 juillet 2020, 05:22
par pilbert
Répondre
0

J'ai trouvé ceci sur un forum.

=SOMME((SUPPRESPACE(STXT(SUBSTITUE(A1;"+";REPT(" ";255));1+(LIGNE(A1:A999)-1)*255;255)) & "0")/10)

Peut-être un début de solution ? C'est du chinois pour moi.

pilbert Posté le 25 juillet 2020, 05:57
par pilbert
1

C'est possible avec une fonction personnalisée :

En B1 : =Calculer(A1)

Dans un module standard :

Option Explicit
Function Calculer(calcul As Range) As Double
  Calculer = Application.Evaluate(Replace(calcul.Formula, ",", "."))
End Function



Patrice33740 Posté le 25 juillet 2020, 13:48
par Patrice33740
  • Bonjour et merci pour ta réponse. J'ai passé une nuit blanche à chercher des solutions, je suis en train d'émerger. Je vais voir comment mettre tout ça en application. Je viens de voir qu'avec le mot "module standard" qu'il s'agit d'une programmation VBA ou un truc comme ça. Je potasse tout ça et je reviens avec un résultat. Merci encore. – 26 juillet 2020, 02:09
  • Désolé, je n'avais pas vu que je n'étais pas connecté quand je te répondais. – pilbert 26 juillet 2020, 03:22
0

Voilà patrice33740. Après une petite bataille pour comprendre comment sauvegarder le fichier avec macro, le résultat est à moitié satisfaisant.

Déjà, le résultat de l'opération apparaît avec cette macro, grand merci.

Le problème est (comme tu le verras dans le fichier) la formule écrite (la succession d'opération) n'apparaît pas pour que l'on contrôle les dimensions prises en compte.

Je suppose qu'il va falloir une autre macro ou modifier la dernière car la fonction "afficher les formules" affiche effectivement TOUTES LES FORMULES du fichier.

C'est la seule partie de mon souhait qui n'a pas été résolue.

En tout cas merci pour t'être penché sur mon problème.

Si je pouvais avoir l'autre solution....... 

Merci !

PS. Je cherche à savoir comment joindre le fichier réalisé...


pilbert Posté le 26 juillet 2020, 03:24
par pilbert
0

Bon au moins je peux aller dormir.

Il m'a suffit de mettre un apostrophe devant la formule pour laisser apparaître celle-ci.

Donc un grand merci à toi Patrice33740 pour ton aide et aussi merci à tous ceux qui ont réfléchi à mon problème.

À la prochaine.

pilbert Posté le 26 juillet 2020, 04:45
par pilbert
0

«Le problème est (comme tu le verras dans le fichier) la formule écrite (la succession d'opération) n'apparaît pas pour que l'on contrôle les dimensions prises en compte.»

«Il m'a suffit de mettre un apostrophe devant la formule pour laisser apparaître celle-ci.»

Si tu saisis la formule comme tu l'indiques dans ton premier post :

(2,50+(6,20/2))*2

il n'y a pas de raison qu'elle n'apparaisse pas dans la cellule (au format standard).

Excel ne considère que c'est une formule uniquement si elle commence par égale (=), plus (+) ou moins (-) et effectue alors le calcul. dans les autres cas, il considère que c'est un texte et affiche ce texte.

A mon avis commencer ta formule par un apostrophe n'est pas une bonne solution, ça peut géner l'évaluation par la fonction Calculer(). Il est préférable de mettre la colonne au format texte avant de saisir la formule.

Si la formule est déjà saisie, le fait de mettre la colonne au format texte n'est pas suffisant : il faut ensuite re-saisir la formule.

Patrice33740 Posté le 26 juillet 2020, 15:28
par Patrice33740
  • Ecoute, je suis agréablement surpris que ça marche avec l'apostrophe en plus. Ainsi, la formule écrite : '=1+1 en A1 qui s'affiche : =1+1 donne bien 2 en B1. Bien entendu dans B1 j'ai bien : =Calculer(A1) Va savoir ! Les formats en A1 et B1 sont : Nombre/Standard.
    Si j'enlève l'apostrophe A1 affiche le résultat qui est 2 au lieu de =1+1.
    pilbert 27 juillet 2020, 01:58
0

Bonjour à tous, 

Faire des métrés de bâtiments est mon activité principale et en fait, je fais le contraire de ce qui est posé comme question.

Là où il doit y avoir le résultat, par exemple en B1, je mets la formule du genre =(2,50+(6,20/2))*2 ce qui m'affiche la valeur 11,20 et là où j'ai besoin de visualiser la formule de calcul, je mets tout simplement

=FORMULETEXTE(B1)

Quand des fois, j'entre une valeur sans faire de calcul, la fonction FORMULETEXTE m'affiche un message d'erreur alors mes modèles ont la formule suivante :

=SI(ESTFORMULE(B1);FORMULETEXTE(B1);"")

Ça ne répond pas du tout à la question, mais c'est aussi une piste.

La copie écran jointe donne un exemple https://www.cjoint.com/c/JHbh1zxznjX les valeurs sont saisies ou calculées en colonne G et le détail du calcul est affiché en colonne F

MicXL Posté le 1 août 2020, 09:57
par MicXL
0

Bonjour,

Je propose les 2 fichiers ci-dessous (2 méthodes différentes).

Fichier n° 1 - sans macro VBA, avec formule à étirer :

https://mon-partage.fr/f/08U33CHV/

Fichier n° 2 - avec macro VBA, sans formule à étirer :

https://mon-partage.fr/f/51jFE7xf/

rhodo

rhodo Posté le 13 août 2020, 23:22
par rhodo
0

@pilbert

Je viens de compléter ma réponse du 13 août (2 fichiers au lieu d'un seul).

Si tu reviens sur ton sujet et que tu essayes les 2 fichiers de mon post précédent,
merci de me dire quelle méthode tu as préféré ; si tu as besoin d'une adaptation,
n'hésite pas à me demander.

rhodo

rhodo Posté le 15 août 2020, 01:20
par rhodo

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :