VBA - incrire des formules sans sélectionner la feuille
18 réponses
twinley
Bonjour,
Mes errements booléens sont causés par un truc assez ennuyeux.
J'ai des sub qui posent différentes formules dans un tas de cellules de
la feuille nommée "Graph1".
ça marche impeccable, quand je suis dans la feuille Graph1.
Mais si une autre feuille est active, les formules ne sont pas écrites
pour certaines et d'autres génèrent des erreurs, d'où mon astuce d'aller
vérifier le contenu des cases, de sélectionner la feuille Graph1 et de
réinscrire les formules. Ce qui contourne le pb.
Mais à la réflexion puisque je met le chemin de la cellule, il doit y
avoir une façon élégante d'inscrire ces formules ou je veux sans
sélectionner la feuille !?
Et comme je me sens pas de retranscrire en VBA ces formules...
si je suis sur une autre page active, donc autre que Graph1, la formule n'est pas écrite dans la cellule de la feuille Graph1.
Si tu exécutes le code donné, il n'y a pas de souci : la formule sera écrite en N12 de la feuille "Graph1" Pour mémoire : il n'est pas nécessaire de passer par Sheets(X).Range(Y) Il suffit d'utiliser une référence 3D : Range("graph1!N12") ou plus court (ce que je t'ai donné) : [graph1!N12]
D'autre part, pour écrire une formule, il n'est pas indispensable de passer par Formula ou FormulaLocal, tu peux simplement passer par une simple égalité suivie de la chaîne de caractères composant la formule (formulation anglaise)
En résumé, l'exemple que je t'ai donné, indépendamment du fait que c'est la formulation la plus courte, n'a aucune raison de ne pas fonctionner !
AV
si je suis sur une autre page active, donc autre que Graph1, la formule
n'est pas écrite dans la cellule de la feuille Graph1.
Si tu exécutes le code donné, il n'y a pas de souci : la formule sera écrite en
N12 de la feuille "Graph1"
Pour mémoire : il n'est pas nécessaire de passer par Sheets(X).Range(Y)
Il suffit d'utiliser une référence 3D :
Range("graph1!N12") ou plus court (ce que je t'ai donné) : [graph1!N12]
D'autre part, pour écrire une formule, il n'est pas indispensable de passer par
Formula ou FormulaLocal, tu peux simplement passer par une simple égalité suivie
de la chaîne de caractères composant la formule (formulation anglaise)
En résumé, l'exemple que je t'ai donné, indépendamment du fait que c'est la
formulation la plus courte, n'a aucune raison de ne pas fonctionner !
si je suis sur une autre page active, donc autre que Graph1, la formule n'est pas écrite dans la cellule de la feuille Graph1.
Si tu exécutes le code donné, il n'y a pas de souci : la formule sera écrite en N12 de la feuille "Graph1" Pour mémoire : il n'est pas nécessaire de passer par Sheets(X).Range(Y) Il suffit d'utiliser une référence 3D : Range("graph1!N12") ou plus court (ce que je t'ai donné) : [graph1!N12]
D'autre part, pour écrire une formule, il n'est pas indispensable de passer par Formula ou FormulaLocal, tu peux simplement passer par une simple égalité suivie de la chaîne de caractères composant la formule (formulation anglaise)
En résumé, l'exemple que je t'ai donné, indépendamment du fait que c'est la formulation la plus courte, n'a aucune raison de ne pas fonctionner !