Monsieur Excel
Pour tout savoir faire sur Excel !

18 janvier 2012

Afficher la formule de la cellule

Il est parfois utile – en particulier dans les applications pédagogiques – de reproduire, dans la cellule à droite d’une formule délicate, le texte de la formule.

La façon la plus simple d’atteindre cet objectif est d’utiliser les macros Excel 4 qui, contre toute attente et contrairement aux annonces de Microsoft en 1993, à la sortie d’Excel 5, continuent encore à fonctionner.

Reprenons le modèle publié dans l’article du 21 juillet 2011, en effaçant les colonnes C et suivantes pour simplifier la présentation.

Mettons-nous en C13 et définissons le nom « Formule » comme dans la fenêtre ci-dessous. Il suffit ensuite d’entrer la formule =formule dans la cellule C13 – et à la reproduire vers le bas – pour afficher en C13:C18 le contenu des formules de B13:B18.

Remarque 1 – Nous avons ôté de la définition du nom la référence à la feuille qui était venue automatiquement quand nous avons pointé sur la cellule à gauche. Nous avons aussi rendu cette référence relative. Grâce à ces deux opérations, la formule correspondra toujours à la cellule de gauche, quelle que soit la feuille active.

Remarque 2 – Si vous placez la définition de ce nom dans le classeur Perso.xls qui s’ouvre automatiquement au lancement d’Excel, vous pourrez utiliser ce nom dans n’importe quel classeur. Le seul problème est que, sur un autre ordinateur, la formule « =formule » engendrera alors une erreur #NOM ! car le nom ne sera plus reconnu...

2 Commentaire(s):

  • Marrant, je n'arrive pas à le reproduire dans mon Office 2010, mais je dois mal m'y prendre.

    Par contre, je ne trouve pas forcément que ça soit la méthode la plus simple, une bonne vieille fonction publique enregistrée dans le fichier fait bien l'affaire :

    Public function AfficherFormule(Cellule as range) as string
    AfficherFormule = Cellule.Formula
    End Formule


    On peut même en faire quelque chose de sympa si la fonction à un but pédagogique :

    Public Enum Enum_AfficherFormule

    International = 1
    Francais = 2
    R1C1International = 3
    R1C1Francais = 4

    End Enum

    Public Function AfficherFormule(Cellule As Range, Optional Retour As Enum_AfficherFormule = International) As String

    Select Case Retour
    Case International
    AfficherFormule = Cellule.Formula
    Case Francais
    AfficherFormule = Cellule.FormulaLocal
    Case R1C1International
    AfficherFormule = Cellule.FormulaR1C1
    Case R1C1Francais
    AfficherFormule = Cellule.FormulaR1C1Local
    End Select

    End Function

    Mais il ne s'agit là que de préférence personnelle :)

    Molenn

    By Anonymous Anonyme, sur 10:37 AM  

  • C'est bien vrai qu'il s'agit de préférence personnelle : je préfère un simple nom à une macro-fonction...

    Quant à votre solution, qui marche bien, quitte à rendre le Retour obligatoire, voici une solution un peu plus légère :

    Public Function AfficherFormule(Cellule As Range, Retour As Integer) As String

    Select Case Retour
    Case 1
    AfficherFormule = Cellule.Formula
    Case 2
    AfficherFormule = Cellule.FormulaLocal
    Case 3
    AfficherFormule = Cellule.FormulaR1C1
    Case 4
    AfficherFormule = Cellule.FormulaR1C1Local
    End Select

    End Function

    By Blogger Hervé Thiriez, sur 9:27 AM  

Enregistrer un commentaire

<< Accueil