Taux d'intérêt d'un investissement

solgti

XLDnaute Junior
Bonjour, je connais la fonction TAUX qui permet de trouver un taux d'intérêt annuel d'un investissement selon une période, exemple 5 ans.
Je sais aussi que l'on peut ajouter un montant pour chaque période.
Mais ma question est plutôt:
Comment calculer le taux d'intérêt annuel si on fait quelques ajout à notre investissement.
Exemple:
je place 1000$ dans un fond commun de placement
après 5 ans j'ai un montant de 2000$
mais pendant cette période de 5 ans j'ai réinvesti 2 fois soit un montant de 200$ après 2 ans et et un montant de 300$ après 4 ans
Donc 1000$ + 200$ (après 2 ans) + 300$ (après 4 ans)
Valeur après 5 ans 2000$
Quel est le taux d'intérêt annuel

Merci de m'éclairer

Solgti
 

job75

XLDnaute Barbatruc
Bonjour solgti,

Il s'agit "simplement" de résoudre l'équation du 5ème degré 1000*(1+T)^5+200*(1+T)^3+300*(1+T)=2000

Avec du VBA on ne se casse pas la tête, voyez le fichier joint et cette macro :

Code:
Sub Calcul()
'Résoudre 1000*(1+T)^5+200*(1+T)^3+300*(1+T)=2000
Dim T&
For T = 1 To 100000000
  If 1000 * (1 + T / 1000000) ^ 5 + 200 * (1 + T / 1000000) ^ 3 + 300 * (1 + T / 1000000) >= 2000 Then
    [A6] = T / 1000000 'restitution
    Exit For
  End If
Next
End Sub
Comme on peut le voir le pas du calcul est de 0,0001%.

Le taux d'intérêt annuel est 7,414%, le résultat a été obtenu avec 74140 itérations.

A+
 

Pièces jointes

  • Taux annuel(1).xlsm
    23.1 KB · Affichages: 62
Dernière édition:

solgti

XLDnaute Junior
Bonjour job75, vraiment intéressant comme solution, et si je peux me permettre comment pourrait-on rendre cette fonction encore plus flexible pour qu'elle puisse répondre à un nombre variable d'ajout à notre investissement à différente période?
C'est-à dire que des fois on pourrait ajouter 2 ajout, des fois 3 ou 4 ou aucun ou autre.

Merci

Solgti
 

job75

XLDnaute Barbatruc
Re,

Oui et si on fait un nouvel investissement chaque mois au bout de 5 ans il y en aura eu 60...

On ne peut pas paramétrer des évènements aléatoires.

Il faut poser l'équation à chaque fois et adapter la macro, ce n'est pas très difficile, juste la ligne du If...Then à modifier.

A+
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,

Il serait plus convenable de consulter votre conseillé financier ou un comptable qui seront plus expérimenté pour répondre à votre demande !
Le forum d'excel-download n'a pour tâche que de vous aider dans des formules et des macros !

Pas vu job75 ! Bonjour, Peut-être la bonne solution !

Mais cette demande se complique dans la mesure que les versements ne sont pas périodiques ( exemple une fois par mois) !
De ce fait, les intérêts peuvent être modifiés entre temps sur les investissements qui sont calculés tout les ans .

Bonne journée !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir à tous, solgti, Job75, JBARBE

Bonjour à tous,
Il serait plus convenable de consulter votre conseillé financier ou un comptable qui seront plus expérimenté pour répondre à votre demande !
Le forum d'excel-download n'a pour tâche que de vous aider dans des formules et des macros !
Bonne journée !
:eek:o_O

Il est plus que conseillé de d'abord savoir si le conseiller est convenable ;)

Le forum n'est dévolu à aucune tâche particulière puisque nous sommes bénévoles.

Et les finances, les maths et Excel font bon ménage, non ?
 
Dernière édition:

JBARBE

XLDnaute Barbatruc
Bonsoir à tous, solgti, Job75, JBARBE


:eek:o_O

Il est plus que conseillé de d'abord savoir si le conseiller est convenable ;)

Le forum n'est dévolu à aucune tâche particulière puisque nous sommes bénévoles.

Et les finances, les maths et Excel font bon ménage, non ?

Bonjour Staple1600,
Tout d'abord merci du conseil !
Job75 que je n'avais pas vu avant mon post fait toujours du bon travail sur ce forum et je l'en félicite !
Mais comme il le dit et comme j'ai signalé dans mon post ( sans voir le sien ), des dépôts aléatoires ne peuvent être pris en compte dans sa macro sans nécessiter des Si !
Mais bon, je me suis peu-être trompé dans mes propos, il y a peut-être des comptables ou experts comptables qui sont des bénévoles dans ce forum !

Cela dit, j'ai une assurance vie et malgré de nombreux versements aléatoires et réguliers, non seulement on me compte à chaque fois des frais , mais en plus les rendements sont ridiculement bas !
Ainsi les intérêts sont de ce fait faussé par ces frais qui sont quand même de 0,75%

Les banques feront toujours un maxi de profils sur notre dos !

Bonne journée !
 
Dernière édition:

job75

XLDnaute Barbatruc
Re, salut JBARBE et Jean-Marie,

Fichier (2) avec un tableau des investissements et des formules, étudiez-les bien.

La macro, très simple, entre les taux successifs en C4 (c'est lourd) :
Code:
Sub Calcul()
Dim T&
Application.ScreenUpdating = False
For T = 1 To 100000 'taux de 0 à 100%
  [C4] = T / 100000
  If [C5] >= [B2] Then Exit For
Next
End Sub
Evidemment cela prend bien plus de temps, j'ai donc augmenté le pas à 0,001%.

A+
 

Pièces jointes

  • Taux annuel(2).xlsm
    23.6 KB · Affichages: 52

job75

XLDnaute Barbatruc
Bonjour solgti, le forum,

Voici un travail plus sérieux qui utilise un tableau VBA (matrice) :
Code:
Sub Calcul()
Dim cible#, tablo, ub&, i&, t#, s#, j&
cible = [C2]
With [G2].CurrentRegion
  .Columns(4).Name = "Capital" 'plage nommée pour peaufiner...
  If Application.Sum(.Columns(1)) = 0 Then [D4] = "": Exit Sub 'aucun investissement
  tablo = .Resize(, 3) 'matrice, 3 colonnes suffisent
End With
ub = UBound(tablo)
For i = 0 To 1000000 'taux de 0 à 100%
  t = i / 1000000
  s = 0
  For j = 2 To ub
    s = s + tablo(j, 1) * (1 + t) ^ tablo(j, 3)
  Next
  If s >= cible Then Exit For
Next
[D4] = t 'restitution
End Sub
Le calcul est très rapide, on peut donc revenir à un pas de 0,0001%.

Fichier (3), j'ai mis des nombres d'années décimaux.

Bonne journée.
 

Pièces jointes

  • Taux annuel(3).xlsm
    25.4 KB · Affichages: 56

solgti

XLDnaute Junior
Bonjour job75,
la différence est vraiment hallucinante.
Je ne suis pas très bon en VBA, mais je vais regarder attentivement votre fonction pour essayer de comprendre.

Merci encore d'avoir pris autant de votre temps pour me répondre.
solgti
 

job75

XLDnaute Barbatruc
Re,

J'aime bien pinailler :cool:

Si à cause de l'arrondi du capital à 2 décimales l'avant-dernière itération convient c'est elle qu'il faut prendre :
Code:
Sub Calcul()
Dim cible#, tablo, ub&, i&, t#, mems#, s#, j&
cible = [C2]
With [G2].CurrentRegion
  .Columns(4).Name = "Capital" 'plage nommée pour peaufiner...
  If Application.Sum(.Columns(1)) = 0 Then [D4] = "": Exit Sub 'aucun investissement
  tablo = .Resize(, 3) 'matrice, 3 colonnes suffisent
End With
ub = UBound(tablo)
For i = 0 To 1000000 'taux de 0 à 100%
  t = i / 1000000
  mems = s 'somme précédente
  s = 0
  For j = 2 To ub
    s = s + tablo(j, 1) * (1 + t) ^ tablo(j, 3)
  Next
  If s >= cible Then Exit For
Next
If Format(mems, "0.00") = Format(cible, "0.00") Then t = t - 1 / 1000000
[D4] = t 'restitution
End Sub
Fichier (3 bis).

A+
 

Pièces jointes

  • Taux annuel(3 bis).xlsm
    24.7 KB · Affichages: 70

solgti

XLDnaute Junior
Bonjour, j'espère que Job75 est toujours à l'écoute.
J'ai progressé pas mal avec la formule que vous m'avez faite, j'ai utilisé une table de données de mes placements et je fais un array pour calculer le rendement et ça fonctionne relativement bien.
Je souhaite aller encore un peu plus loin et en faire une fonction Excel du genre:
=Rendement("Portefeuille";"Fonds")
où Portefeuille et Fonds sont les valeurs inscrite dans 2 cellules exemple A1 et B1
Mais je n'arrive pas à faire une fonction complexe, en fait je suis capable de faire une fonction qui calcul le Surface d'un cercle avec 1 paramètre ou encore une fonction mathématique qui calcul un résultat avec plusieurs arguments.
Mais il semble que lorsque je monte un array pour l'utiliser dans mon calcul ça ne fonctionne pas.
Exemple simple:
Si je fait une procédure:
Sub Test()
Dim myArray As Variant
Dim x As Long
myArray = Worksheets("Table de Données").ListObjects("Tableau_De_Données").DataBodyRange
[n20].Resize(UBound(myArray)).Value2 = myArray
End Sub
ça fonctionne et le résultat s'écrit dans N20
par contre si je change pour une fonction et pour que la fonction retourne un résultat j'ajoute Test=1
ça ne fonctionne pas:
Function Test()
Dim myArray As Variant
Dim x As Long
myArray = Worksheets("Table de Données").ListObjects("Tableau_De_Données").DataBodyRange
[n20].Resize(UBound(myArray)).Value2 = myArray
Test = 1
End Function
ça écrit dans la cellule de la formule #Valeur!

J’ai fait beaucoup de recherche sans succès.
Est-ce que vous pouvez me donner un coup de main SVP?

Merci
solgti
 

Discussions similaires

Statistiques des forums

Discussions
311 718
Messages
2 081 866
Membres
101 827
dernier inscrit
kubinou