Formule dans une cellule

Bonjour,

Je fais appel à votre aide pour trouver la solution à mon bug actuel :

La formule est la suivante : Marge brute = Ventes - Coût des marchandises vendues

Les titres (marge brute, ventes et coût des marchandises vendues) sont dans la colonne A

Les montants en $ sont dans la colonne B

Toutefois, les Ventes et Coût des marchandises vendues ne sont pas toujours sur les même lignes.

Avec les variables et offset, j'arrive à trouver le résultat de la marge brute.

Toutefois, la cellule du résultat de la Marge brute indique uniquement la valeur et non la formule pour y arriver.

Je cherche donc à trouver la façon d'écrire le code de façon à ce que la formule soit inscrite dans la cellule du résultat de la marge brute.

Je joins le fichier Excel.

Je vous remercie à l'avance pour votre aide.

Bonjour olivier8510,

L'enregistreur de macro te donne une solution

Range("B2").FormulaR1C1 = "=R[3]C-R[4]C"

C'est l'approche RC (row column) qui te permet d'avoir une formule selon la position de ta cellule

Ici on est en B2 et la formule c'est (B2 + 3 lignes = B5) - (B2 + 4 lignes = B6) ==> Ta formule B2 = B5 - B6

Bonjour PinkRabbit,

Merci pour la réponse rapide.

Si les Ventes et/ou Coût des marchandises vendues changent de ligne, est ce que cette formule en tiendra compte?

Olivier8510,

Ca dépend, les formules en R1C1 se basent uniquement sur le décalage par rapport à la celulle dans laquelle elle est insérée quand tu les applique.

Après si tu veux insérer la formule sur une feuille au départ et que tu les déplaces dynamiquement via Excel, la formule s'ajustera (comme pour une formule classique dans Excel).

L'autre solution, qui dépend de la façon dont tes fichiers vont fonctionner, sera de nommer les cellules.

La cellule contenant la valeur de tes ventes tu la nommes "Vente" et celle des coûts tu l'appelles "Cout" et enfin dans vba tu mettras:

Range("B2").Formula = "=(" & Range("Vente").address & "-" & Range("Cout").address & ")"

Mais tout ça dépend vraiment de la façon de fonctionner de ton fichier

Bonjour PinkRabbit,

Oui on est y presque. J'ai modifié un peu pour l'adapter :

Range("B2").Formula = "=(" & Range("A:A").Find("Ventes").Offset(0, 1).Address & "-" & Range("A:A").Find("CMV").Offset(0, 1).Address & ")"

La formule dans la colonne B2 est maintenant :

=($B$5-$B$27)

Maintenant il ne reste qu'à déverrouiller la colonne afin de pouvoir copier la formule dans les autres colonnes et qu'elle s'adapte :

=(B$5-B$27)

=(C$5-C$27)

Merci encore pour ton aide.

Olivier

Je t'en prie, ravi d'avoir pu t'aider !

Je galère avec le déverrouillage. Je voudrais faire passer le offset de (0,1) à (0,2) à (0,3) ...en fonction de la colonne.

Est-ce que tu aurais la réponse à ceci?

Encore merci.

Olivier

Tu peux remplacer 1,2,3 etc... par une variable qui viendrait récupérer l'index column d'un objet range

Range("C1").column te renverra 3 par exemple

Encore une fois il n'y a pas de formule magique ça dépend de la structure de ton fichier

Rechercher des sujets similaires à "formule"