Conversion d'une forule Excel en code VBA

Fermé
pricer - 17 janv. 2011 à 17:35
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 18 janv. 2011 à 13:02
Bonjour

J'utilise une formule sous Excel (2003) qui a la forme suivante :

=si(Duree_Amort*1+1=An_Amort;Montant*Indice;0)
+si(Duree_Amort*2+1=An_Amort;Montant*Indice;0)
+si(Duree_Amort*3+1=An_Amort;Montant*Indice;0)
+si(Duree_Amort*4+1=An_Amort;Montant*Indice;0)
+si(Duree_Amort*5+1=An_Amort;Montant*Indice;0)

En fait, Duree_Amort, An_Amort, Montant, Indice sont, au niveau de ma formule, des références à des cellules.

Est-ce que quelqu'un pourrait m'aider à traduire cette formule Excel en fonction VBA de type :


Public Function CalcAmort(Duree_Amort, An_Amort, Montant, Indice As Variant)

Dim Amortissement As Variant

If Duree_Amort * 1 + 1 = An_Amort Then
Amortissement = Montant * Indice
End If
CalcAmort = Amortissement
....
End Function

Merci par avance pour toute aide.
A voir également:

2 réponses

Bonjour,

Voici la réponse :

Public Function CalcAmort(Duree_Amort, An_Amort, Montant, Indice As Variant)

Dim Amortissement As Variant

If range("Duree_Amort") * 1 + 1 = range("An_Amort") Then
range("Amortissement")= range("Montant") * range("Indice")
End If
CalcAmort = range("Amortissement").value
....
End Function
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
18 janv. 2011 à 13:02
Bonjour,
Tu répète trop de fois la même chose !!
Public Function CalcAmort(Duree_Amort As Range, An_Amort As Range, Montant As Range, Indice As Range)
    If (Duree_Amort.Value * 5) + 1 <= An_Amort.Value Then
        CalcAmort = Montant.Value * Indice.Value
    End If
End Function

Mais ta fonction Excel pourrait aussi être simplifiée par
     =si((Duree_Amort*5) + 1 <=An_Amort; Montant*Indice; 0) 

A+
0