O valor financiado quase sempre terá uma diferença de centavos, devido as decimais que envolvem o cálculo.
A tabela price está considerando a contagem dias corridos, ou seja, varia de 30, 31, 28 ou 29 dias conforme o mês (lembrando que no cálculo com a HP12 o resultado será sempre diferente pois a mesma considera todos os meses com 30 dias).
No início da função estão as informações de como passar os parâmetros.
Testem antes de utilizar!
;-)
Public Function f_composicao(taxa As Double, _
qtd_parcelas As Integer, _
dt_inicio As String, _
dt_primeira_parcela As String, _
vlr_parcela) As Double
'Para passar os argumentos desta função:
'Informar valores no padrão americano (ponto no lugar de vírgula)
'Informar data entre aspas duplas (string) Exemplo: "31/07/2013"
'Informat a taxa em percentual. Exemplo 1,5% -> informar 0.015
Dim i As Integer
Dim tx_ao_dia As Double
Dim vlr_composicao As Double
tx_ao_dia = Fix((((taxa + 1) ^ (1 / 30) - 1) * 100) * 1000000000) / 1000000000
vlr_composicao = 0
'Primeira parcela
vlr_composicao = vlr_parcela * (Fix(1 / ((tx_ao_dia / 100 + 1) ^ ((CDate(dt_primeira_parcela) - CDate(dt_inicio)))) * 1000000000) / 1000000000)
For i = 1 To qtd_parcelas - 1
vlr_composicao = vlr_composicao + vlr_parcela * (Fix(1 / ((tx_ao_dia / 100 + 1) ^ (DateAdd("M", i, CDate(dt_primeira_parcela)) - CDate(dt_inicio))) * 1000000000) / 1000000000)
Next
f_composicao = vlr_composicao
Exit Function
End Function
