Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2021Pourquoi EXCEL affiche les formules en texte ?
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 !
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.
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.
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.
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é
@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
Perso je comprends pas que si le tableau est déclaré en String ça marche pas alors qu'en le déclarant en Variant ça marche bien que tous les éléments du tableau Variant soient de type String.
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