VBA ecrire une formule dans une cellule

Fermé
cib Messages postés 17 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 11 juillet 2007 - 15 mai 2007 à 13:56
 CoinCoin - 31 mai 2012 à 13:48
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

3 réponses

xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
15 mai 2007 à 14:06
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"

;-)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 mai 2007 à 14:08
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
0
cib Messages postés 17 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 11 juillet 2007
15 mai 2007 à 14:23
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
0
xjl Messages postés 232 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 juin 2007 183
15 mai 2007 à 17:17
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... ;-)
0
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)
0