Calcul plusieurs NPV via VBA

Bonjour,

Je souhaite réaliser un code afin de comparer plusieurs NPV et donc plusieurs investissements.

J'ai cru comprendre qu'il fallait créer une variable type cashflow(# de cashflows) afin de réaliser ceci

exemple ci dessous (copié-collé du site d'aide microsoft)

Dim Fmt, Guess, RetRate, NetPVal, Msg

Static Values(5) As Double ' Set up array.

Fmt = "###,##0.00" ' Define money format.

Guess = .1 ' Guess starts at 10 percent.

RetRate = .0625 ' Set fixed internal rate.

Values(0) = -70000 ' Business start-up costs.

' Positive cash flows reflecting income for four successive years.

Values(1) = 22000 : Values(2) = 25000

Values(3) = 28000 : Values(4) = 31000

NetPVal = NPV(RetRate, Values()) ' Calculate net present value.

Msg = "The net present value of these cash flows is "

Msg = Msg & Format(NetPVal, Fmt) & "."

MsgBox Msg ' Display net present value.

Cependant, mon problème réside dans le fait que, dans mon code, je suis dans une boucle while qui me permet de faire ces calculs de NPV les uns après les autres, afin de stocker ses valeurs. Et, étant donné que le nombre de Cashflow peut varier d'un investissement à un autre, je ne peux introduire ma variable cashflow qu'à partir d'une autre variable définissant le nombre de cashflows dans la colonne concernée. Et enfin, lorsque je souhaite faire cela, vba me dit qu'il ne peut créer une variable cashflow(x) qu'à partir d'un x fixe et non pas d'une autre variable, bien que celle ci ne change pas pendant la boucle for me permettant de donner à chaque cashflow(i) la valeur du flux correspondant.

Voici par exemple le code que je souhaitais utiliser pour cette partie

Dim cf(lrow - 4 -1) As Double

For i = 4 To lrow 'lrow représentant la dernière ligne de la colonne considérée, chaque colonne correspondant à un investissement et donc lrow étant, dans cette colonne, le dernier flux

cf(i) = Cells(i, 5 + lcol - 1)

Next

Cells(10 + lcol - 1, 2) = NPV(Cells(3, 5 + lcol - 1).Value, cf())

Pouvez vous m'éclairer svp ? Merci par avance

Bonjour,

tu peux créer un tableau dynamique.

Remplacer :

Static Values(5) As Double ' Set up array.

par :

Static Values() As Double ' Set up array. ' créer sans dimension
Redim Values(0 to 4) ' dimensionner ensuite

4 pouvant être une variable à ton choix

eric

Formidable, ça a l'air de fonctionner parfaitement

Merci beaucoup

Rechercher des sujets similaires à "calcul npv via vba"