FormulaR1C1 avec variable

Bonjour le forum,

Pour dépanner Mat il me fallait par VBA envoyer une formule avec une variable dans une cellule. Je m'y suis cassé les dents !...

Si j'écrivais :

Range("G1").FormulaR1C1 = "=3*RC[-4]"

Aucun problème. J'obtenais en G1 la formule =3*C1.

Mais 3 étant variable j'ai voulu écrire :

Dim VAR As Double
VAR = CDbl(Range("S1").Value)
Range("G1").FormulaR1C1 = "=" & VAR & "*RC[-4]"

Impossible ! Erreur systématique. J'ai essayé ! FormulaR1C1Local, Formula, FormulaLocal, en adaptant selon le cas mais rien n'y a fait ! Toujours le même problème de guillemets je pense.

Après une recherche dans le forum j'ai trouvé une solution :

Dim VAR As Double
VAR = CDbl(Range("S1").Value)
Range("G1").FormulaR1C1 = "=""" & VAR & """*RC[-4]"

Si VAR vaut 3,11 Ça me renvoie en G1 la formule = "3,11"*D1 (avec des guillemets autour de la varaible) mais ça marche.

Quelqu'un aurait-il une explication à cela. Ça me paraît tellement incongru ces triple guillemets dans VBA et surtout les guillemets dans la formule finale.

Merci à ceux qui prendront le temps de lire ce post.

Bonsoir,

Je me suis toujours demandé pourquoi certain s'évertuent à ferrailler avec FormulaR1C1 alors que c'est si simple avec Formula...

Sub test()
Dim Var As Double
Var = [S1]
ActiveCell.Formula = "=" & Var & "* C1"
End Sub

Évidemment ça ne répond pas à ta question, mais s'il y en a un qui a la réponse à ta question, peut-être qu'il pourra aussi préciser quel est l’intérêt d'utiliser R1C1 en VBA alors qu'avec Formula YAKA recopier la formule de la barre des taches !

A+

Re,

Merci pour ta réponse mais ça ne marche pas. Je l'avais testée comme dit plus haut. En revanche avec les guillemets par paquets de 10 ça marche

Sub test()
Dim Var As Double
Var = CDbl(range("S1"))]
Range("G1").Formula = "=""" & Var & """* C1"
End Sub

Le mystère reste entier !?...

Je ne vois pas de raison pour que ça ne marche pas ?

Au pire si tu dois incrémenter tu y mets quelques dollars de plus... Mais je n'ai pas encore rencontré de cas d'impossibilité !

Re,

Ben... Teste ! Après on discute...

84galopin-v01.xlsm (20.20 Ko)

Bonjour à tous,

Ceci fonctionne sur mon Excel (365 - 32bits)

Sub test()
Dim Var As Double
Var = CDbl(Range("S1"))
Range("G1").FormulaLocal = "=" & Var & "*C1"
End Sub

ric

Bonsoir Ric

En effet ton code fonctionne chez moi aussi. Merci beaucoup !

Ben... Teste ! Après on discute...

Je te rassure : Je teste toujours un peu... Je ne code jamais à la hache directement sur l'éditeur du forum !

Après il peut aussi m'arriver de dire des c... mebon !

Tricher n'est pas jouer :

Tu appliques la formule avec C1 mais tu testes S1 ! Evidement que ça marche moins bien !

Un petit coup de pompe ?

A+

Re,

Tricher n'est pas jouer :

Tu appliques la formule avec C1 mais tu testes S1 ! Evidement que ça marche moins bien !

Exactement ce que tu as fait quand tu disais que ça marchait !...

galopin01 a écrit :

Je me suis toujours demandé pourquoi certain s'évertuent à ferrailler avec FormulaR1C1 alors que c'est si simple avec Formula...

Sub test()
Dim Var As Double
Var = [S1]
ActiveCell.Formula = "=" & Var & "* C1"
End Sub

Évidemment ça ne répond pas à ta question, mais s'il y en a un qui a la réponse à ta question, peut-être qu'il pourra aussi préciser quel est l’intérêt d'utiliser R1C1 en VBA alors qu'avec Formula YAKA recopier la formule de la barre des taches !

Enfin, il me semble... Sauf que tu as appliqué la formule sur la cellule active au lieu de G1. Mais même comme ça, sans hache, ça ne marche pas... En tous cas chez moi... Qui triche ?!...

75galopin-v02.xlsm (19.79 Ko)

Décidément on doit pas parler le même français !

ActiveCell ou Range("G1") même combat :

La formule multiplie C1 par S1 si tu ne mets rien dans S1 ou rien dans C1 tu obtiens toujours zéro mais la formule affichée dans G1(ou dans "ActiveCell") est bien "LaBonne" Si tu regardes la barre des formules c'est bien ce qui est attendu ?

ppi

Ton fichier non modifié dans le VBA : J'ai juste rajouté une valeur à C1... et que tu mettes Formula ou Formula Local le résultat est le même : Non ? Sur ce plan 2010 n'est pas différent de 2016 que je sache.

A+

79liens-vg.xlsm (44.63 Ko)

Re,

Non Galopin. Ce n'est pas que nous ne parlons pas le même français. C'est tout simplement que chez toi ça marche et pas chez moi. D'où notre incompréhension mutuelle...

j'ai un code erreur :

Erreur d'exécution '1004' :

Erreur définie par l'application ou par l'objet

sur la ligne :

ActiveCell.Formula = "=" & Var & "* C1"

J'avoue que j'aurais du le préciser dès mon premier post ! Méat coule pas (comme dit un italien atteint de cystite) !

Si j'ai posté c'est justement parce que je ne comprenais pas que ça ne marche pas. Pas de tricheurs mais juste deux machines différentes...

Rechercher des sujets similaires à "formular1c1 variable"