VBA ecrire une formule dans une cellule

cib Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
 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

3 réponses

xjl Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   183
 
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 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   183
 
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
CoinCoin
 
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