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

Conversion d'une formule Excel en code VBA

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

pricer

XLDnaute Nouveau
Bonjour tout le monde,

Pour amortir un montant donné (une charge) sur plusieurs années (30 ans), j’ai mis en place une formule Excel qui me donne le résultat escompté. Un extrait de la formule sur les 5 premières années est le suivant :

=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)

Or, quand il y a beaucoup d’argument dans ma fonction, Excel bloque et me sort le message suivant « Formule trop longue ».
Pour contourner le problème, j’ai pensé à mettre ma formule sous VBA en utilisant une fonction type :

Public Function CalcAmort(Duree_Amort, An_Amort, Montant, Indice)
if Duree_Amort*1+1=An_Amort
then Montant*Indice
else 0
End Function

Mais je n’arrive pas à trouver le bon code.
Merci par avance pour toute aide et excellente semaine.

Pricer
 
Re : Conversion d'une formule Excel en code VBA

Bonjour Bernard,

Merci pour ton fichier mais il se trouve que j'ai déjà une application qui tourne. Mon problème est plutôt technique comment passer d'une formule Excel à du code VBA.

Amicalement,
Pricer
 
Re : Conversion d'une formule Excel en code VBA

Salut,

ça ne peut pas marcher si vous faites un enregistrement de macro?
Ensuite vous sélectionnez la cellule, vous cliquez dans la barre de formule et faites entrer. Puis arrêter la macro.
Vous obtiendrez quelque chose comme ça :
ActiveCell.FormulaR1C1 = _
"=IF(Duree_Amort*1+1=An_Amort,Montant*Indice,0)+IF(Duree_Amort*2+1=An_Amort,Montant*Indice,0)"


Bonne journée
 
Re : Conversion d'une formule Excel en code VBA

Bonjour Olivowitch, le Forum

Merci pour le tuyau mais je cherche une formule (codée) que je pourrais utiliser de façon générique dans plusieurs cellules dans mon fichier excel.

Merci par avance pour toute proposition dans ce sens.

Pricer
 
Re : Conversion d'une formule Excel en code VBA

Re

J'ai pu créer ce morceau de code qui marche pour juste pour le premier niveau d'amortissement !

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
If Duree_Amort * 2 + 1 = An_Amort Then
Amortissement = Amortissement + Montant * Indice
End If
End If
CalcAmort = Amortissement
End Function

Merci pour toute proposition.

Bonne soirée
Pricer
 
Re : Conversion d'une formule Excel en code VBA

Bonsoir Pricer, le forum,
Comme je n’arrive pas à comprendre ta formule, j’ai reconstitué un tableau d’amortissements. Peux-tu indiquer les montants que l’on doit trouver chaque année, en modifiant le tableau si nécessaire ?
Cordialement,
Bernard
 

Pièces jointes

- 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

Discussions similaires

Réponses
4
Affichages
802
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…