Affichage valeur d'une cellule

Résolu
Ezzelin -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

En deux mots je cherche à établir un modèle de facture,
En euro et USD, mais on nous demande d'afficher la formule utilisée pour obtenir le résultat.
J'ai trouvé une macro qui me permet d'afficher la formule mais lorsque je fais mes opérations elle utilise le nom des cases, alors que je souhaiterais qu'elle affiche les valeurs des cases auxquelles je fais appelle.

Concrètement
En A1 J'ai ma macro type Afficheformule(B1)
En B1, j'ai mon calcul type C1*D1

Et je voudrais qu'en A1 s'affiche non pas = C1*D1 mais les valeurs numériques (=10*10 par ex).

Quelqu'un peut il m'aider ? Merci d'avance.



3 réponses

ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour

je crois que la solution passe par l'interprétation de la formule. En fait, il faut 'dégager' les references aux cellules des constantes et des signes opératoires
comme ça concerne une facture, les signes opératoires sont simples, et il n'y a (peut etre) pas de fonctions mathématiques
un essai avec une procedure récursive (certainement) à améliorer, mais l'idée est là (à indenter proprement)

<code>Option Explicit

Private Sub CommandButton1_Click()
Dim f As String, ff As String
f = Range("B4").Formula
ff = ""
Call ConstruitF(ff, f)
Range("A1").Value = "'" & ff
End Sub


voir la procedure ConstruitF modifiée (30 octobre)
3
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
Bonsoir,

Là je dis bravo... :-)
Si tu veux que ton code conserve l'indentation tu peux le sélectionner (même en modification) et lui appliquer la balise code (la 4ème icone en haut <>, après l'icone S)
Et si tu veux mettre un fichier exemple il faut utiliser cijoint.fr et coller ici le lien fourni.

eric
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
merci eric pour le tuyau, c'est nettement mieux comme ça
cordialement
0
Ezzelin
 
OK Merci à tous les deux.
Malheureusement je ne suis pas un utilisateur expérimenté, du moins pas encore, j'ai des bases de programmation, en gros il me faudrait le mode d'emploi de la fonction que tu as élaboré.
Merci d'avance.
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
pour visualiser le code clic-droit sur l'onglet de la feuille 1 puis Visualiser le code
mode d'emploi de la procedure ConstruitF (lui donner deux paramètres : resultat et donnee)
l'appel se fait avec l'instruction Call ConstruitF(ff,f)
- f est la formule contenue dans la cellule a traiter (ici B4) et obtenue avec .formula
- ff = "" lors de l'appel
au retour ff contiendra le résultat
et Range("A1").Value = "'" & ff le mettra dans A1 précédé d'un ' (pour eviter l'interprétation)
Si tu veux voir comment elle marche, le mieux est de mettre un point d'arret sur la 1° ligne (clic en marge) , de l'executer pas à pas (touche F8) et de regarder comment évoluent les variables
bonne suite
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
ah, un oubli, les références absolues ($) ne sont pas traitées, ça reste à faire
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 765
 
Bonjour,
Sans le code de ta macro, cela semble difficile... A moins que le créateur de la macro " Afficheformule()" soit dans les parages, sait on jamais!
0
Ezzelin
 
ok je te donne cela
Function Afficheformule(x)
Afficheformule = x.Formula
End Function
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 765
 
Je ne sais pas si cela va te convenir... Et je ne sais pas si tout simplement c'est possible.......
Soluce 1 :
Tu peux "figer" une partie de ta formule :
En A1 : =C1*D1
en B1 : =Afficheformule(A1)
en C1 : 10
en D1 : 10
Tu cliques sur A1, sélectionne (dans la barre de formule) C1 (=C1*D1) appuie sur F9 tape "entrée", tu vois ton résultat en B1 s'afficher : =10*D1. recommence en sélectionnant cette fois ci D1...
Long, fastidieux et inutile car à refaire à chaque fois et pour chaque formule...

Soluce 2 :
En A1 : =C1*D1
en C1 : 10
en D1 : 10
en B1 : '=10*10
L'apostrophe devant le signe égal empêchant le calcul de la formule, mais ne se voit pas.....

Si quelqu'un d'autre trouvait une vraie solution, qu'il (elle) n'hésite pas...
0