Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - incrire des formules sans sélectionner la feuille

18 réponses
Avatar
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...

Je vous remercie pour l'aide

voici quelques exemples :

Sheets("Graph1").Range("L12").FormulaLocal = _
[=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12))]

Sheets("Graph1").Range("N12").FormulaLocal = _
[=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)]

Sheets("Graph1").Range("K12").FormulaLocal = _
[=IF(K13=0,F12,IF(M13=M14,+N12*(L12-K13)+K13,N12*(L12-L13)+L13))]


à+twinley

10 réponses

1 2
Avatar
AV
Exemple :

[graph1!N12] = "=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"

AV
Avatar
twinley
Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:
Exemple :

[graph1!N12] = "=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"

AV




Avatar
docm
Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _
["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12
))"]


"twinley" wrote in message
news:
Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:
Exemple :

[graph1!N12] "=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"

AV






Avatar
twinley
.../...

non, passe pas : erreur 1004

à+twinley

docm wrote:
Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _
["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12
))"]


"twinley" wrote in message
news:

Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:

Exemple :

[graph1!N12] >
"=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"



AV











Avatar
docm
Possiblement FormulaLocal à remplacer par Formula car tu lui passes une
formule anglaise.


"twinley" wrote in message
news:
.../...

non, passe pas : erreur 1004

à+twinley

docm wrote:
Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _

["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12


))"]


"twinley" wrote in message
news:

Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:

Exemple :

[graph1!N12] > >
"=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"



AV













Avatar
twinley
merci docm,

tu m'as apporté une grosse partie de la solution.

ça passe comme cela avec une autre feuille sélectionnée,

avec formula et sans les crochets.

Sheets("Graph1").Range("L12").Formula = _
"=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12
))"


Par contre une autre formule ne passe pas avec une erreur 1004,
alors que les quatre précédentes similaires à celle au dessus, passent !


Sheets("Graph1").Range("I12").Formula = _
"=IF(M12,IF(M12=M13,K12,L13),"")"

la même dans une autre variante ne passe pas avec une erreur 1004

[Graph1!J12].Formula = _
"=IF(M12,"",IF(M12=M13,K12,L13))"

La différence, c'est les quote qui peuvent perturber en cassant la
formule, mais je ne sais pas comment traiter ce cas...

à+twinley


docm wrote:
Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _
["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12
))"]


"twinley" wrote in message
news:

Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:

Exemple :

[graph1!N12] >
"=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"



AV











Avatar
twinley
C'est tout bon, merci à tous.
Pour l'autre forme avec les quotes intra formule, la solution c'est :

[Graph1!J12].Formula = "=IF(M12,"""",IF(M12=M13,K12,L13))"

donc :

formula, pas de [ ] et """" pour les quote intra formule.

Ouf ! Bonne soirée

twinley



twinley wrote:
merci docm,

tu m'as apporté une grosse partie de la solution.

ça passe comme cela avec une autre feuille sélectionnée,

avec formula et sans les crochets.

Sheets("Graph1").Range("L12").Formula = _
"=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12
))"


Par contre une autre formule ne passe pas avec une erreur 1004,
alors que les quatre précédentes similaires à celle au dessus, passent !


Sheets("Graph1").Range("I12").Formula = _
"=IF(M12,IF(M12=M13,K12,L13),"")"

la même dans une autre variante ne passe pas avec une erreur 1004

[Graph1!J12].Formula = _
"=IF(M12,"",IF(M12=M13,K12,L13))"

La différence, c'est les quote qui peuvent perturber en cassant la
formule, mais je ne sais pas comment traiter ce cas...

à+twinley


docm wrote:

Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _
["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12

))"]


"twinley" wrote in message
news:

Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:

Exemple :

[graph1!N12] >>



"=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"

AV













Avatar
docm
Bravo.
Heureux si j'ai pu contribuer à ta solution.

"twinley" wrote in message
news:

C'est tout bon, merci à tous.
Pour l'autre forme avec les quotes intra formule, la solution c'est :

[Graph1!J12].Formula = "=IF(M12,"""",IF(M12=M13,K12,L13))"

donc :

formula, pas de [ ] et """" pour les quote intra formule.

Ouf ! Bonne soirée

twinley



twinley wrote:
merci docm,

tu m'as apporté une grosse partie de la solution.

ça passe comme cela avec une autre feuille sélectionnée,

avec formula et sans les crochets.

Sheets("Graph1").Range("L12").Formula = _

"=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12


))"


Par contre une autre formule ne passe pas avec une erreur 1004,
alors que les quatre précédentes similaires à celle au dessus, passent !


Sheets("Graph1").Range("I12").Formula = _
"=IF(M12,IF(M12=M13,K12,L13),"")"

la même dans une autre variante ne passe pas avec une erreur 1004

[Graph1!J12].Formula = _
"=IF(M12,"",IF(M12=M13,K12,L13))"

La différence, c'est les quote qui peuvent perturber en cassant la
formule, mais je ne sais pas comment traiter ce cas...

à+twinley


docm wrote:

Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _

["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12




))"]


"twinley" wrote in message
news:

Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:

Exemple :

[graph1!N12] > >>



"=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"

AV















Avatar
Daniel.M
Bonsoir,

Les crochets sont de trop (si tu veux vraiment mettre une formule dans L12) :

Sheets("Graph1").Range("L12").Formula = _
"=IF(M13=M14,IF(M13,MIN(E12,L13),MAX(D12,L13)),IF(M13,E12,D12))"

Salutations,

Daniel M.


"twinley" wrote in message
news:
.../...

non, passe pas : erreur 1004

à+twinley

docm wrote:
Bonjour.

Essaie de mettres la formule entre guillemets ;)

Sheets("Graph1").Range("L12").Formula = _
["=IF(M13=M14,IF(M13,IF(E12<L13,E12,L13),IF(D12>L13,D12,L13)),IF(M13,E12,D12
))"]


"twinley" wrote in message
news:

Bsr,

même chose que ma syntaxe. Je n'ai pas le chemin de la cellule.

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.

à+twinley

AV wrote:

Exemple :

[graph1!N12] > >
"=IF(M13=M14,IF(L13=L12,N13,IF(N13<N$11,N13+M$11,N$11)),L$11)"



AV













Avatar
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 !

AV

1 2