Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Programmation VBA

  • Initiateur de la discussion Initiateur de la discussion Guest
  • 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 !

G

Guest

Guest
Bonjour!

Eh oui, me voilà de retour après un petit temps d'abscence! J'espère que vous allez tous bien!
Mon petit problème aujourd'hui et de mettre en place une application qui arrive à calculer le prix (P)d'une obligation en fonction de différents paramètres : sa valeur faciale (F)
sa maturité (durée, notée n)
son coupon, noté C, qui correspond au gain que l'on a annuellement (comme un dividende mais ici c'est pour une obligation et non aps une action, donc on appelle ca un coupon)
son taux de rendement R
Je sais que la relation entre le prix P et son taux de rendement R est :
P =somme (C/((1+R)^k))+(F/((1+R)^n)), avec la somme qui va de k=1 à n

Je n'arrive pas à trouver un programme qui permette de prendre e compte TOUS ces éléments... Faut-il faire des boucles? des procédures particulières???
 
Re : Programmation VBA

bonsoir lililette,
il n'est pas nécessaire de le faire en vba, mais si tu veux, tu peux prendre exemple sur le fichier suivant pour le calcul de la duration et traduire les formules en vba

Ce lien n'existe plus

si j'ai bien compris ta question, c'est ce que tu veux calculer?

bon courage

albert
 
Re : Programmation VBA

Bonjour Albert et à tous les forumeurs!

C'est exactement ça, merci! Mais je voudrais éviter de faire le second tableau en automatisant par VBA le calcul et avoir seulement le coupon (colonne F), les autres colonnes (à partir G) ne me sont pas utiles... Et je ne sais justement pas comment programmer ce calcul sur VBA... Bonne journée
 
Re : Programmation VBA

lililette,
Les colonnes I et J sont indispensables pour calculer la duration en B7. En conséquence, je ne vois pas pourquoi tu veux supprimer le 2eme tableau.
De toutes les manières, il faut bien que tu indiques des variables pour faire tourner vba => les calculs intermédiaires sont indispensables.
Si tu veux absolument utiliser vba, pour faire joli, tu peux retranscrire les formules excel en vba, mais au bout du compte, tu auras toujours des calculs intermédiaires…

albert
 
Re : Programmation VBA

Bonjour à tous et à toutes!

Voilà, j'ai réussi à transcrire mes attentes sur VBA concernant le calcul de la valeur d'un coupon d'une obligation. Seulement je n'y suis arrivée qu'en faisant apparaitre des boites de message dans lequel l'utilisateur doit entrer les différentes valeurs... et je voudrais que ce même calcul se fasse directement lorsque l'utilisateur entre les valeurs dans les cellules appropriées (et non en passant par des boites de dialogue...)...
 
Re : Programmation VBA

Salut,

Je ne comprends pas tres bien ou se situe ton problème, il te suffit de mettre le code suivant et ca focntionne :
Code:
Private Sub CommandButton1_Click()
'Cells(7, 6) = InputBox("Entrez la maturité de l'obligation")
n = Range("F7").Value
'Cells(9, 6) = InputBox("Entrez la valeur faciale de l'obligation")
F = Range("F9").Value
'Cells(11, 6) = InputBox("Entrez le montant du coupon périodique")
C = Range("F11").Value
'Cells(13, 6) = InputBox("Entrez le taux de rendement actuariel")
R = Range("F13").Value
Sum = 0
For k = 1 To n
    Sum = (C / (1 + R) ^ k) + Sum
Next k
Cells(16, 6) = Sum + (F / (1 + R) ^ n)
End Sub


Ou alors tu peux meme utiliser une macro evenementielle de ce genre, de cette manière, lorsque tu remplis la dernière cellule (Taux de rendement actuariel), la macro se lance directement (a placer dans le module de la feuille concernée) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F13")) Is Nothing Then
For i = 7 To 13 Step 2
If IsEmpty(Cells(i, 6).Value) = True Then MsgBox "Veuillez remplir le champs " & Cells(i, 2).Value: Exit Sub
Next i
n = Range("F7").Value
F = Range("F9").Value
C = Range("F11").Value
R = Range("F13").Value
Sum = 0
For k = 1 To n
Sum = (C / (1 + R) ^ k) + Sum
Next k
Cells(16, 6) = Sum + (F / (1 + R) ^ n)
End If
End Sub

@+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
750
Réponses
7
Affichages
829
Réponses
18
Affichages
2 K
B
  • Question Question
Réponses
3
Affichages
1 K
R
Réponses
1
Affichages
1 K
P
  • Question Question
Réponses
3
Affichages
1 K
C
Réponses
3
Affichages
2 K
claivier_58
C
H
Réponses
19
Affichages
7 K
A
Réponses
0
Affichages
8 K
Arpopa
A
C
Réponses
4
Affichages
2 K
chacal33
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…