VBA - incrire des formules sans sélectionner la feuille

Le
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
  • Partager ce contenu :
Vos réponses Page 1 / 2
Trier par : date / pertinence
AV
Le #1923442
Exemple :

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

AV
twinley
Le #1923431
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




docm
Le #1923420
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" 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






twinley
Le #1923417
.../...

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" 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











docm
Le #1923415
Possiblement FormulaLocal à remplacer par Formula car tu lui passes une
formule anglaise.


"twinley" 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" 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













twinley
Le #1923408
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" 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











twinley
Le #1923404
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" 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













docm
Le #1923393
Bravo.
Heureux si j'ai pu contribuer à ta solution.

"twinley" 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" 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















Daniel.M
Le #1923382
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" 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" 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













AV
Le #1923377
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

Poster une réponse
Anonyme