Conversion d'une forule Excel en code VBA

pricer -  
lermite222 Messages postés 9042 Statut Contributeur -
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.

2 réponses

  1. melanie1324
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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