Affichage valeur d'une cellule
Résolu
Ezzelin
-
ccm81 Messages postés 11033 Statut Membre -
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.
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.
A voir également:
- Affichage valeur d'une cellule
- Affichage double ecran - Guide
- Excel cellule couleur si condition texte - Guide
- Bloquer une cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Attribuer une valeur à une cellule texte excel - Forum Excel
3 réponses
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)
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)
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!
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!
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...
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...
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
cordialement
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.
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