VBA ecrire une formule dans une cellule
cib
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
CoinCoin -
CoinCoin -
Hi!
je souhaite écrire une formule dans une cellule via ma macro :
j'essaie:
Worksheets("DIMENSIONS (F)").Range("B21").Formula = "=SI(IMPORT!A3="";"";IMPORT!A3)"
j'essaie :
Worksheets("DIMENSIONS (F)").Range("B21").Formula = "SI(IMPORT!A3="";"";IMPORT!A3)"
mais ça ne marche pas!!
où est l'erreur??? : )?
merci
Cib
je souhaite écrire une formule dans une cellule via ma macro :
j'essaie:
Worksheets("DIMENSIONS (F)").Range("B21").Formula = "=SI(IMPORT!A3="";"";IMPORT!A3)"
j'essaie :
Worksheets("DIMENSIONS (F)").Range("B21").Formula = "SI(IMPORT!A3="";"";IMPORT!A3)"
mais ça ne marche pas!!
où est l'erreur??? : )?
merci
Cib
A voir également:
- VBA ecrire une formule dans une cellule
- Formule si et - Guide
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Verrouiller une cellule excel dans une formule - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule moyenne excel plusieurs colonnes - Guide
3 réponses
Salut,
alors deux choses:
- la première, il me semble que tu devrais mettre FormulaR1C1 dans ta première syntaxe...
- la deuxième, je crois que tu te complique un peu la vie, parce qu'un si qui te renvoie "" si la cellule IMPORT!A3 est égale à "" et qui te revoie IMPORT!A3 sinon, autant mettre Worksheets("DIMENSIONS (F)").Range("B21").FormulaR1C1= "=IMPORT!A3"
;-)
alors deux choses:
- la première, il me semble que tu devrais mettre FormulaR1C1 dans ta première syntaxe...
- la deuxième, je crois que tu te complique un peu la vie, parce qu'un si qui te renvoie "" si la cellule IMPORT!A3 est égale à "" et qui te revoie IMPORT!A3 sinon, autant mettre Worksheets("DIMENSIONS (F)").Range("B21").FormulaR1C1= "=IMPORT!A3"
;-)
bonjour,
c'est quoi DIMENTION(F) c'est quoi le (F) comme tu l'écrit c'est l'indice d'un groupe, mais le feuille ne peuvent être groupée par leurs nom.
Donne plus d'explication parce que comme celà je comprend pas bien et a mon avis l'erreur est là.
Si tu a plusieur feuille avec les noms par ex DIMENTION 1 : DIMENTION 2 etc.. Tu doit mettre le nom de la feuille de la même façon, si tu veux travaillé par incrémentation il faut employer sheets(x)
A+
louis
c'est quoi DIMENTION(F) c'est quoi le (F) comme tu l'écrit c'est l'indice d'un groupe, mais le feuille ne peuvent être groupée par leurs nom.
Donne plus d'explication parce que comme celà je comprend pas bien et a mon avis l'erreur est là.
Si tu a plusieur feuille avec les noms par ex DIMENTION 1 : DIMENTION 2 etc.. Tu doit mettre le nom de la feuille de la même façon, si tu veux travaillé par incrémentation il faut employer sheets(x)
A+
louis
merci pour les propositions.
maintenant j'ai:
Worksheets("DIMENSIONS (F)").Range("B21").FormulaR1C1 = "=IMPORT!A3"
qui me retourne dans la cellule B21 :
=IMPORT!'A3' du coup j'ai #NOM?
DIMENSIONS (F) est le nom de la feuille, j'ai essayé avec un nom plus simple ABC mais c'est pareil.
a+
Cib
maintenant j'ai:
Worksheets("DIMENSIONS (F)").Range("B21").FormulaR1C1 = "=IMPORT!A3"
qui me retourne dans la cellule B21 :
=IMPORT!'A3' du coup j'ai #NOM?
DIMENSIONS (F) est le nom de la feuille, j'ai essayé avec un nom plus simple ABC mais c'est pareil.
a+
Cib
Effectivement, d'ailleurs tu peux tester en écrivant =IMPORT!A3 dans une cellule, ça fonctionne, le problème vient bien des quote qui se mettent automatiquement autour de A3, mais je ne sais pas comment empêcher ça...
Ah si, j'ai trouvé, il faut remplacer le .FomulaR1C1 par un .Value et ça fonctionne, va savoir pourquoi... ;-)
Ah si, j'ai trouvé, il faut remplacer le .FomulaR1C1 par un .Value et ça fonctionne, va savoir pourquoi... ;-)
BlaBlaBla.FormulaR1C1 fonctionne avec des arguments RELATIFS à la case en cours (c'est à clire qu'il va falloir lui dire EN RELATIF quel case prendre, et non selectionner directement la case " A3 ").
Comme on veut importer 'directement' la formule, c'est à dire 'telle qu'elle est écrite', sans que le programme le recalcule la position, il faut lui balancer l'info sous forme de
BlaBlaBla.value = "MaFormuleQuiNeDoitPasEtreRecalculée".
(notez que "MaFormuleQuiNeDoitPasEtreRecalculéeé" doit être écrite : " = A1 - A2 ", c'est à dire qu'il faut un " = " dans les guillemets AUSSI !
ce qui donne : BlaBlaBla.value = " = A1 - A2 " )
Un exemple d'utilisation de formule R1C1 serait : tu me prends la valeur une colonne au dessus, 3 lignes en dessous : BlaBlaBla.FormulaR1C1 = R[3]C[-1]
...Et il va interpréter en RELATIF la ligne et la colonne (C[-1] : une colonne au dessus, R[3] : 3 lignes en dessous)
Comme on veut importer 'directement' la formule, c'est à dire 'telle qu'elle est écrite', sans que le programme le recalcule la position, il faut lui balancer l'info sous forme de
BlaBlaBla.value = "MaFormuleQuiNeDoitPasEtreRecalculée".
(notez que "MaFormuleQuiNeDoitPasEtreRecalculéeé" doit être écrite : " = A1 - A2 ", c'est à dire qu'il faut un " = " dans les guillemets AUSSI !
ce qui donne : BlaBlaBla.value = " = A1 - A2 " )
Un exemple d'utilisation de formule R1C1 serait : tu me prends la valeur une colonne au dessus, 3 lignes en dessous : BlaBlaBla.FormulaR1C1 = R[3]C[-1]
...Et il va interpréter en RELATIF la ligne et la colonne (C[-1] : une colonne au dessus, R[3] : 3 lignes en dessous)