Bonjour,
Existe t'il des équivalents VBA pour les fonctions Excel TAUX et VPM ?
Version imprimable
Bonjour,
Existe t'il des équivalents VBA pour les fonctions Excel TAUX et VPM ?
Bonjour,
Code:
1
2 Application.WorksheetFunction.Rate 'Equivalent de =TAUX Application.WorksheetFunction.Pmt 'Equivalent de =VMP
Il est aussi possible de les utiliser avec Evaluate https://docs.microsoft.com/fr-fr/off...ation.evaluate
WorksheetFunction est plus pratique pour une simple fonction.
Evaluate est plus pratique s'il s'agit d'une formule avec plusieurs fonctions.
Bonjour,
Un grand merci pour vos réponses.
Re-bonjour,
Je reviens vers le forum car je suis confronter à une énigme.
Je dois déterminer le taux "équivalent" d'un prêt unique à partir des données de 2 autres prêts dont un a un taux fixé à 1,00%.
Pour les tests, le prêt1 est de 7.500.000 au taux de 2,00% et le prêt2 est de 7.500.000 au taux de 1,00%.
Avec l'application, le résultat (TextBox5) est égal à 0,1464% alors qu'avec Excel, le résultat est 1,7567%. Après vérification manuelle, le résultat Excel est le bon.
Pouvez-vous m'aider à trouver l'erreur ?
A vous lire.
Bien cordialement.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 Private Sub UserForm_Initialize() Me.TextBox2.Locked = True Me.TextBox3.Locked = True Me.TextBox5.Locked = True Me.TextBox8.Locked = True Me.TextBox8 = Format(1 / 100, "0.0000%") 'taux d'intérêts Prêt2 (fixe à 1,00%) End Sub Private Sub CommandButton1_Click() Dim mens1 As Double Dim durée1 As Double Dim taux1 As Double Dim CoutTotal1 As Double Dim Prêt1 As Double Dim mens2 As Double Dim durée2 As Double Dim taux2 As Double Dim CoutTotal2 As Double Dim Prêt2 As Double Dim mens3 As Double Dim durée3 As Double Dim taux3 As Double Dim CoutTotal3 As Double Dim Prêt3 As Double Set f = Sheets("Données") taux1 = Me.TextBox7 / 100 'Taux d'intérêts Prêt1 Prêt1 = CDbl(Me.TextBox2) 'Montant du Prêt1 durée1 = CDbl(Me.TextBox10) 'Durée du prêt1 mens1 = Application.WorksheetFunction.Pmt(taux1 / 12, durée1, Prêt1) 'mensualité du Prêt1 Me.TextBox13 = CDbl(-mens1) Me.TextBox13 = Format(Me.TextBox13, "#,##0") Me.TextBox7 = Format(Me.TextBox7 / 100, "0.0000%") CoutTotal1 = mens1 * durée1 'Coût total Prêt1 (capital + intérêts) Me.TextBox8 = 1 taux2 = Me.TextBox8 / 100 'Taux d'intérêts Prêt2 Prêt2 = CDbl(Me.TextBox3) 'Montant Prêt2 durée2 = CDbl(Me.TextBox9) 'Durée Prêt2 mens2 = Application.WorksheetFunction.Pmt(taux2 / 12, durée2, Prêt2) 'mensualité Prêt2 Me.TextBox12 = CDbl(-mens2) Me.TextBox12 = Format(Me.TextBox12, "#,##0") Me.TextBox8 = Format(Me.TextBox8 / 100, "0.0000%") CoutTotal2 = mens2 * durée2 'Coût total Prêt2 (capital + intérêts) CoutTotal3 = CoutTotal1 + CoutTotal2 'Coût total Prêt3 (capital + intérêts) durée3 = CDbl(Me.TextBox11) 'Durée (mois) Prêt3 mens3 = CoutTotal3 / durée3 'mensualité Prêt3 Prêt3 = Me.TextBox1 taux3 = Application.WorksheetFunction.Rate(durée3, mens3, Prêt3) 'Taux d'intérêts équivalent Prêt3 Me.TextBox5 = taux3 Me.TextBox5 = Format(Me.TextBox5, "0.0000%") Me.TextBox1 = Format(Me.TextBox1, "#,##0") Me.TextBox14 = mens3 Me.TextBox14 = Format(Me.TextBox14, "#,##0") End Sub Private Sub TextBox1_Change() Me.TextBox2 = Prêt1 Me.TextBox2 = Format(Me.TextBox2, "#,##0") Me.TextBox3 = Prêt2 Me.TextBox3 = Format(Me.TextBox3, "#,##0") End Sub Private Sub CommandButton2_Click() Unload Me End Sub
Les TextBox contiennent du texte, comme leur nom l'indique.
Utiliser des valeurs numériques dans des TextBox avec des formatages exotiques comme des pourcentages, c'est chercher les ennuis.
Fais fonctionner ton programme en pas-à-pas en regardant à chaque affectation de variable quelle est la valeur récupérée.
Pour ça, tu peux utiliser un espion ou la liste des variables locales.
Bonjour Menhir,
J'avais, bien sûr, déjà utilisé le fonctionnement pas à pas.
Après, entre autres, une intense réflexion, mon souci est maintenant résolu. J'avais tout simplement oublié que le résultat de mon calcul (ligne 56) renvoyait un taux mensuel alors que je cherchais un taux annuel. De plus, j'avais omis (volontairement) l'argument 6 (estimation) de la fonction Application.WorksheetFunction.Rate. Cette estimation est donc valorisé par défaut à 10%.
Alors pour obtenir le résultat attendu, il faut multiplier ladite fonction par 1,2 (soit 12 (nombre de mois) x 10% (estimation).
Merci encore pour vos réponses.