Ecrire une formule dans une cellule

Bonjour,

j'aimerais écrire une formule dans une cellule.

For j=1 to 10

Cells(j,1) = Quantité 'est une valeur venant d'un autre onglet

Cells(j,2) = Prix 'est une valeur venant d'un autre onglet

Cells(j,3) = Cells(j,1)*Cells(j,2)

Next j

Ce code fonctionne mais dans la cellule j,3, j'ai la réponse à la formule et non la formule et donc si je copie la ligne et que je modifie les quantités, le prix total n'est pas adapté car il n'y a pas de formule.

Merci d'avance pour vos idées.

et pourquoi pas mettre ta formule directement sur ta feuille ? au lieu de passer par une macro ?

parce que j'ai un onglet avec une liste de matériel de+- 1000 article.

Parce que j'ai une macro qui créer une nouvelle sheet et importe les données de la liste de matériel et d'une liste client

Parce que je dois quelques fois modifier cette nouvelle sheet pour modifier le nombre d'article et que j'aimerais que les prix totaux soient automatiquement adaptées.

Parce que je trouve ça plus pratique si une macro le fait à ma place car au final, c'est un peu le but des macro...

Bonne journée

Dans ce cas faut faire agir ta macro avec un

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Cdlt

?? Tu sais me donner une ou deux explication stp car je ne comprend pas.

Désolé d'être un ignare ou presque en macro. L'idée également, c'est que je puisse par la suite écrire dans des cellules non pas des valeures mais d'autres formules dont les cellules agissant dans ces formules seraient variables...

re,

là quand tu fais une formule en macro, elle s’exécute et puis c'est tout, si tu changes ta valeur en j1 ou j2 le résultat restera le même en j3 .

Par contre, si tu mets ta macro dans ta feuille, avec un " change " tu pourras la relancer à chaque fois qu'une cellule de la feuille va changer . Tu comprends ?donc si tu changes j1 et j2 la macro relancera ta formule .

Pour le faire, dans VBA tu doubles click sur la feuille désirée, tu selectionnes worksheet à la place de général et change dans la déclaration et tu mets tes instructions entre Private Sub Worksheet_Change(ByVal Target As Range) End sub

Oui, ça c'est une possibilité mais après avoir executé la macro, je modifie manuellement d'autres valeurs dans la nouvelle sheet et si je refais tourner la macro, elle va m'écraser les modification.

Par contre, je suis étonné que ce soit si compliqué en VBA pour écrire non pas le résultat d'une formule mais une formule qui s'execute en dehors de la macro.

Bonjour,

Ce n'est pas si compliqué !

Pour voir quelle macro renvoie une formule, crée la formule dans la bonne cellule ensuite enregistre une macro.

Dès que tu as lancé l'enregistreur de macro fais comme si tu voulais modifier la formule : clique dans la barre de formule, puis valide aussitôt par Enter. Puis arrête l'enregistreur.

Regarde dans VBA ce qui a été enregistré :

si en C1 tu avais cette formule :

=A1*A2"

L'enregistreur te donnera :

Sub Macro1()
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
End Sub

Ce qui est la bonne syntaxe pour écrire cette formule en relatif sur toute la colonne par exemple...

Par la suite tu pourras écrire

Sub Test()
For j=1 to 10
Cells(j,3).FormulaR1C1 = "=RC[-2]*RC[-1]"
Next j
End Sub

A+

Range("J3").Formula = "=J1*J2"

Ha pardon je n'avais pas vu (:

Merci beaucoup.

C'est vraiment ça que je cherchais.

Rechercher des sujets similaires à "ecrire formule"