Fonction VBA - Afficher la formule d'une cellule

Pour écrire et partager des tutoriels et des astuces (Excel, Calc et Google Sheets uniquement)
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'501
Appréciations reçues : 551
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 12 janvier 2014, 12:41

Bonjour,
Je mets à votre disposition une fonction personnalisée en VBA qui retourne (affiche) la formule d'une cellule.
=SOMMEPROD(A13:A17;B13:B17)
=SUMPRODUCT(A13:A17,B13:B17)
C13:  =SOMMEPROD(A13:A17;B13:B17)
C13:  =SUMPRODUCT(A13:A17,B13:B17)
La fonction propose:
1 - le résultat en langage utilisateur ou en langue anglaise (internationale).
2 - d'afficher la référence ou pas de la cellule appelée.
La fonction comporte 3 arguments non optionnels (Cellule, Langue, Adresse)
Cellule fait référence à une cellule (ex. A1) ; Langue et Adresse sont des valeurs booléennes (0/1 Faux/Vrai)

Cette fonction est à priori supportée par toutes les versions d'Excel
Voir fichier pour exemples d'utilisation.
Option Explicit
Public Function Affiche_Formule(Cellule As Range, Langue As Boolean, Adresse As Boolean) As String
Dim x As String, y As String
    Application.Volatile True
    ' si la cellule ne comporte pas de formule, on sort de la fonction.
    If Not Cellule.HasFormula Then Exit Function
    With Cellule
        ' adresse de la cellule (ex. B5)
        x = .Address(False, False) & ":  "
        If Langue Then
        ' on veut le résultat en langage utilisateur (Langue=0).
            y = .Formula
        Else
        ' on veut le résultat en langue anglaise (Langue=1).
            y = .FormulaLocal
        End If
        ' ajout des accolades si la formule est matricielle.
        If Cellule.HasArray Then y = Chr(123) & y & Chr(125)
    End With
    If Adresse Then
        ' on veut l'adresse de la cellule (Adresse=1)
        Affiche_Formule = x & y
    Else
        ' on ne veut pas l'adresse de la cellule (Adresse=0)
        Affiche_Formule = y
    End If
End Function
L'utilité d'une telle fonction n'est pas à démontrer :D
Afficher Formule vba v1.xls
(36.5 Kio) Téléchargé 301 fois
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
z
ztreasury
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 2 novembre 2014
Version d'Excel : 2010

Message par ztreasury » 2 novembre 2014, 10:02

Bonjour, j'ai un fichier excel que j'ai reçu d'un collégue qui affiche la formule du calcul et qui ne permet pas d'afficher la valeur comment faire pour désactiver cette option pour que je puisse remplir les données.

Merci pour votre aide
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'501
Appréciations reçues : 551
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 2 novembre 2014, 12:41

Bonjour,
Fichier,
Options,
Options avancées
---> Afficher les options pour cette feuille de calcul
------> Décocher 'Formules dans les cellules au lieu de leurs résultats calculés'.
Cdlt
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
C
CHRIS1945
Membre fidèle
Membre fidèle
Messages : 307
Inscrit le : 2 septembre 2015
Version d'Excel : 2007

Message par CHRIS1945 » 9 octobre 2015, 00:06

Bonsoir,
Désolé, je n'avais pas du tout compris ta demande : tu voulais voir la formule...
La solution de jean-eric est fantastique. Je ne la connaissais. Merci à lui. Je l'ai stockée.

J'ajoute simplement qu'il y a aussi moyen de changer les options d'excel dans les options avancées sous "afficher les options pour cette feuille de calcul" : "Formules dans les cellules au lieu de leur résultats calculés". Tu coches cette option et les cellules contenant une formule montreront la formule et pas le résultat. Naturellement, cela n'a comme utilité que de voir les formules. Je ne sais pas au juste ce que tu comptes faire avec le résultat.
A+
Chris
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message