Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Pourquoi EXCEL affiche les formules en texte ?

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour Dudu2,

Tu es bien gentil envers toi-même en marquant ton post #2 comme solution 😃

Car tu ne réponds pas au problème posé c'est à dire POURQUOI.

Tu réponds à une autre question : COMMENT y remédier.

A+
 
Bonjour @job75

Je ne cherche aucun bénéfice à mettre ma réponse en solution, je ne concoure pas pour le classement des solutionneurs... qui n'existe pas.
Si je l'ai mise en solution, c'est essentiellement pour éviter que d'autres XLDnautes perdent du temps à examiner ce sujet qu'il m'a été impossible de supprimer.

Sinon, pourquoi Excel fait ceci plutôt que cela, je ne saurai jamais y répondre, le problème étant de passer outre le blocage dans lequel j'étais.
 
Bonjour dudu2,

NB : Pour supprimer un sujet, il vous suffit de demander à un modérateur ou à l'admin en lui faisant un message en MP

Pour votre souci, je ne vois pas pourquoi vous déclarez votre variable TabFormules en STRING. Les tableaux étant toujours à considérer en Variant ou éventuellement en Collection.

Dans votre cas, faites votre déclaration comme ceci
Diff:
Dim TabFormules()
Elle sera considérée comme Variant

En laissant la déclaration en String, modifier votre code comme ceci
Code:
With Tbl
        .DataBodyRange(1) = Application.Evaluate(TabFormules(1, 1))
        .DataBodyRange(2) = Application.Evaluate(TabFormules(1, 2))
    End With
c'est un peu tordu mais bon cela fonctionne même si je n'y vois aucun intérêt

Si vous en avez terminé, pensez à cliquer sur le petit v à droite du post qui vous a donné la solution.

Crdlt
 
Dernière édition:
Bonsoir (phénomène bien connu)
quand on injecte .formula="=trucmuche+bidule" par vba avec une variable string Excel ne déclenche pas le calculate

formula attend le String d'une formule
et un string c'est un string
le variant permet de permuter si la formule est valide
car excel va adapter avec ce que la cellule reçoit

Autrement dit quand tu injectes .formula="=....." tu injecte non seulement le string de la formule mais aussi le contexte
 
re:
Explication sur ce phénomène
en fait
Et ça vient du fait que Excel utilise des FormulaTokens en interne
mais kezako ca?
Un FormulaToken est une unité interne de la machine à formules d’Excel.
Excel ne stocke pas les formules en texte.
Il les stocke en bytecode compilé, composé de petits “tokens”, un par élément :

et en terme de byte vous savez bien que variant est string n'ont pas la même valeur

donc la formule est du texte tant que excel n'a pas réévaluer

Pour réévaluer lancez un calculate ou sélectionner/de sélectionner
Une fois re évaluer les cellules voient leur format cellule modifié
Ensuite les string seront évalués selon le format implicitement appliquer la fois précédente sauf si valeur de la formule est un string au quel cas le format texte sera implicitement appliqué

Ce constat avait déjà été fait sur 2003
 
Bonsoir à tous 😀,
Quelle nervosité ce soir😠! Pour rigoler, une version sans variable déclarée (on élude insidieusement le problème) 😜:
VB:
Sub a()
   ActiveSheet.ListObjects(1).ListRows(1).Range.Formula = Array("=12+13", "=22+23")
End Sub
 
@mapomme sans variable les valeur sont injecté implicitement en tant que variant, donc calculée

je répète
.".formula" attend un string(le string d'une formule quelconque)

la cellule excel qui va la recevoir va déclencher le calculate pourquoi?
parce que c'est un variant et donc besoins d'evaluation var variant excel ( lui pas connaître)
si on lui envoie un string il n'évalue pas excel considère(si je puis m'exprimer ainsi) que c'est du texte volontairement inséré

si je ne me trompe pas même je crois me souvenir que ce truc est hérité des macro4

excel 97 (que des bons souvenir je faisais mes prono thurfiste) a introduit l'apostrophe pour reproduire ce truc manuellement
en effet on le tape devant pour bloquer une formule mais il n'apparaît pas tant que l'on est pas en mode edition
 
La seule chose qui devrait faire comprendre à Excel que c'est une formule, c'est le caractère "=" qui débute le String passé. Et qui n'est évidemment pas précédé d'une simple quote indiquant que c'est du texte pur.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
430
  • Question Question
XL 2016 liste
Réponses
10
Affichages
283
  • Question Question
XL 2021 planning
Réponses
5
Affichages
303
Réponses
3
Affichages
249
Réponses
2
Affichages
170
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…