Insertion de formules "dynamiques"
Bonjour à tous,
C'est mon premier message sur cette partie du forum (je suis bien plus à l'aise sur Power BI :D).
Un ami m'aide a développer un générateur de facture en VBA, à côté de cette dernière une partie "analyse financière" de l'opération apparaît lors de l'appui sur un bouton. Mon collègue a fait en sorte d'appeler des formules qui sont stockées sur une autre feuille de ce classeur, j'ai écrit des formules, mais quand je les appelle, elles apparaissent avec les mauvaises destinations.
Globalement, 10 formules vont être copiée, sur la feuille source elles sont toutes sur la ligne 2 de la feuille, mais lors de l'appel, elles vont venir se renseigner à chaque ligne où il y a un produit sur la facture (range("CORPS") dans le code.
Le problème est le suivant, quand elles sont appelée les formules pointent sur la ligne 2, et non sur la ligne sur laquelle elle se trouve (ex: la formule =o2*k2, appelée sur la ligne 23 devrait devenir = o23*k23, etc...)
J'ai donc 2 questions :
- Le choix de faire les formules ainsi de les appeler est-il le bon ? si oui, il faut donc qu'elles deviennent dynamique.
- Si ce choix n'est pas le bon, l'autre solution est-elle d'écrire directement dans le code VBA la formule, mais dans ce cas, je ne sais pas faire :? j'aurais besoin d'aides :D
Voici le code utilisé pour "l'appel" des mesures, les mesures sont simples (multiplications et calculs de %)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
For Each c In Range("CORPS")
c.Select
nivInsert = ActiveCell.Row
If Range("c" & nivInsert).Value <> "" And Range("M" & nivInsert).Value <> "" Then
Worksheets("Saisies").Range("o" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("o2").Formula
Worksheets("Saisies").Range("p" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("p2").Formula
Worksheets("Saisies").Range("q" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("q2").Formula
Worksheets("Saisies").Range("r" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("r2").Formula
Worksheets("Saisies").Range("s" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("s2").Formula
Worksheets("Saisies").Range("t" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("t2").Formula
Worksheets("Saisies").Range("u" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("u2").Formula
Worksheets("Saisies").Range("v" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("v2").Formula
Worksheets("Saisies").Range("w" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("w2").Formula
Worksheets("Saisies").Range("x" & nivInsert).Formula = Sheets("Analyse_Rentabilite").Range("x2").Formula
Worksheets("Saisies").Range("o" & nivInsert & ":x" & nivInsert).Select
Call miseenforme
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlJustify
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With |
Merci d'avance pour vos réponses et d'éventuelles suggestions !
Cordialement,
Quentin