utilisation d'une fonction excel avec comme arguments des variables VBA

  • Initiateur de la discussion Initiateur de la discussion AntoineDG
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AntoineDG

XLDnaute Nouveau
Bonjour à tous,

Après avoir chercher sur votre forum, je ne trouve malheureusement aucun sujet qui pourrait m'aider dans mon cas.

Je souhaite utiliser une fonction excel avec des arguments que je calcule préalablement dans ma fonction VBA et ceci sans pointer sur une plage de cellules excel. Voici un extrait de ma fonction vba (simplifiée).


Function irrbis(C As Range) As Double

Dim CF() As Double

CF(0) = -C
CF(1) = CF(0)*0.035

For i = 2 To 60
CF(i) = CF(i - 1) + 2500
Next

Dim TRI As Double
TRI = WorksheetFunction.IRR(CF(i))

irrbis = TRI

End Function


Merci d'avance pour vos réponses qui j'espère pourront me débloquer.
 
Re : utilisation d'une fonction excel avec comme arguments des variables VBA

Bonjour AntoineDG et bienvenue sur le forum 😉

Je ne comprends pas bien ta question 😕

Ou se situe ton problème !?

A+
 
Re : utilisation d'une fonction excel avec comme arguments des variables VBA

Le problème qui se pose est que worksheetfunction.irr() doit renvoyer a un plage de cellule du classeur excel. Or Je souhaite renvoyer à une série de données calculée dans ma fonction vba (ici les CF(i)) afin que la fonction excel (=tri()) puisse s'opérer à l'intérieur de ma fonction.

Quand je test ce code il me met #valeur.
 
Re : utilisation d'une fonction excel avec comme arguments des variables VBA

Bonjour


D'abord

Function irrbis(C As Range) As Double

Tu envoie un range à ta fonction


Dim CF() As Double
tu déclare un vecteur de double

CF(0) = -C
Tu affecte le négatif de ton range à un double ?

Tu es sur que c'est bon ?

Ensuite si IRR prend une plage, pourquoi lui passé un Double?
 
Re : utilisation d'une fonction excel avec comme arguments des variables VBA

Oui la formule est juste: elle permet de calculer le taux de rendement interne d'un investissement:

Le calcul est le suivant:

-C ( le capital de départ) + CF(1)/(1+r)^1 (le premier flux) + CF(2)/(1+r)^2 ( le deuxième flux) + CF(n)/(1+r)^n ( le Nième flux)

La formule =tri() gère, elle même la formule du calcul du taux d'actualisation "r" et je voudrai la soliciter dans ma fonction vba une fois que j'aurai calculé les cash flow ( toujours dans ma formule vba).

Donc j'ai modifié la variable "C" en la déclarant en double mais le résultat est le même


Function irrbis(C As Double) As Double

Dim CF() As Double

CF(0) = -C
CF(1) = 5000

For i = 2 To 60
CF(i) = CF(i - 1) + 2500
Next

Dim TRI As Double
TRI = WorksheetFunction.IRR(CF(0):CF(60))
Sur cette partie là je souhaite calculer la somme des cash flow calculés au dessus comme si c'était une plage de cellule excel (sauf que c'est une série de données dans ma fonction vba)


irrbis = TRI

End Function

Je précise que ce calcul est un code simplifié

Est ce plus claire ?
 
Re : utilisation d'une fonction excel avec comme arguments des variables VBA

Oui la formule est juste: elle permet de calculer le taux de rendement interne d'un investissement:

Le calcul est le suivant:

-C ( le capital de départ) + CF(1)/(1+r)^1 (le premier flux) + CF(2)/(1+r)^2 ( le deuxième flux) + CF(n)/(1+r)^n ( le Nième flux)

La formule =tri() gère, elle même la formule du calcul du taux d'actualisation "r" et je voudrai la soliciter dans ma fonction vba une fois que j'aurai calculé les cash flow ( toujours dans ma formule vba).

Donc j'ai modifié la variable "C" en la déclarant en double mais le résultat est le même


Function irrbis(C As Double) As Double

Dim CF() As Double

CF(0) = -C
CF(1) = 5000

For i = 2 To 60
CF(i) = CF(i - 1) + 2500
Next

Dim TRI As Double
TRI = WorksheetFunction.IRR(CF(0):CF(60))
Sur cette partie là je souhaite calculer la somme des cash flow calculés au dessus comme si c'était une plage de cellule excel (sauf que c'est une série de données dans ma fonction vba)


irrbis = TRI

End Function

Je précise que ce calcul est un code simplifié

Est ce plus claire ?

Une plage est en fait une matrice

Tu as essayé de passé CF à IRR ?

TRI = WorksheetFunction.IRR(CF)
comme CF n'est pas défini en dimension, je ne suis pas sur que IRR va aimer
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour