Probléme macro et solver

DJARNAUD

XLDnaute Occasionnel
bonjour,

Je viens d'utiliser l'enregistreur de macro afin d'intégrer le solver à ma macro.
voici le code
VB:
Sub Macro3()
'
' Macro3 Macro
'

'
    SolverOk SetCell:="$V$4", MaxMinVal:=3, ValueOf:=1.1, ByChange:="$B$18", Engine _
        :=1, EngineDesc:="GRG Nonlinear"
    SolverOk SetCell:="$V$4", MaxMinVal:=3, ValueOf:=1.1, ByChange:="$B$18", Engine _
        :=1, EngineDesc:="GRG Nonlinear"
    SolverSolve
End Sub

Toutefois, j'ai un message d'erreur : erreur de compilation, sub ou function non définie
Pourriez vous m'aider?

D'avance merci
 

mécano41

XLDnaute Accro
Tout à fait d'accord. C'est pour cela que dans l'exemple donné j'ai choisi une fonction dont on ne sait pas trouver la réciproque...C'est pareil dans le problème de la chêvre attachée à un point d'un cercle par une corde (de longueur L à trouver) et qui doit brouter la moitié de l'aire du cercle...

Cordialement
 

DJARNAUD

XLDnaute Occasionnel
Bonjour Dranreb, Bonjour mécano41,

Merci pour cette pièce jointe!
J'ai lu le code Vba, mais je ne comprends pas tout.
Quelle est l'utilité de cette ligne?Ou plutot, comment le lien se fait-il avec le solveur?

VB:
SolverAdd Cellref:=Range("Rayon"), Relation:=3, Formulatext:=0.0000001

D'avance merci pour votre aide.
 

DJARNAUD

XLDnaute Occasionnel
J'ai bien tenté de reproduire votre macro mais il y a quelque chose qui ne tourne pas.
J'ai voulu en faire une macro événementielle, dés que le taux de progressivité change, je voudrai que le tableau d'amortissement se recalcule automatiquement.


D'avance merci
 

Pièces jointes

  • fichier à envoyer.xlsm
    44.9 KB · Affichages: 11

mécano41

XLDnaute Accro
Bonsoir,

Voici le fichier corrigé. La cellule amortissement change bien. Dis-moi si c'est ce que tu attends car les calculs financiers et moi...hum

Le Sub Worksheet_Change est dans le code de la Fiche Projet puisque c'est là qu'a lieu le déclenchement l'événement (modification de l'une des cellules de PlageDonnees

Cordialement
 

Pièces jointes

  • fichier et solveur1 .xlsm
    46.1 KB · Affichages: 5

DJARNAUD

XLDnaute Occasionnel
Bonjour Mécano41,

merci beaucoup pour le fichier et pour les annotations qui sont trés instructives.
toutefois la macro ne fonctionne pas correctement.
En effet, peu importe le taux que je renseigne dans ma fiche projet, la somme des amortissement doit toujours être égal à 9 000 000. Quand je passe par le solveur, ça fonctionne, mais avec la macro non.

D'avance merci pour votre aide
 

mécano41

XLDnaute Accro
Bonjour,

Effectivement cela ne fonctionnait pas bien.

J'ai refait une version en nettoyant tout et en revoyant le code. A noter que :

- j'ai eu un peu de mal à trouver qu'il fallait mettre CellVar à zéro....habituellement cela n'était pas nécessaire puisqu'il y a Solver.Reset...
- dans la ligne de rentrée des paramètres tu peux noter pour info. que lorsque l'on désigne une cellule xxx, on utilise (Range"xxx") mais lorsque l'on veut la valeur qu'elle contient il faut ajouter .Value
- j'ai nommé les deux feuilles par leur CodeName (voir dans la colonne Projet du VBA), sinon, si tu changes les noms d'onglets plus rien ne fonctionne
- J'ai ajouté des commentaires

Là, tout a l'air de fonctionner...à tester!

Cordialement
 

Pièces jointes

  • fichier et solveur2 .xlsm
    36.8 KB · Affichages: 14
Dernière édition:

DJARNAUD

XLDnaute Occasionnel
Super!! un grand merci mecano41. J'apprends beaucoup!
J'ai su adapter la macro à mon tableau!
Par contre, je rencontre une nouvelle difficulté. Il peut parfois y avoir des différer d'amortissement. Dans ce cas le loyer est égal aux intérêts. Je voudrai donc savoir s'il est possible de faire varier automatiquement la position de CellVar en fonction du différé?
Pour être plus précis. En cas de différé de deux périodes par exemples, CellVar devrait être en F6 et non plus en F4.
D'avance merci
 
Dernière édition:

mécano41

XLDnaute Accro
Bonsoir,

Il faudrait que tu fasses passer le fichier que j'ai donné (ou un autre) avec les nouvelles dispositions et m'expliquer ce que tu veux faire et ce que doit faire le solveur car il y a peut-être des contraintes à rajouter.... (précise bien les cellules concernées et la feuille qui les porte).

Cordialement
 

ODVJ

XLDnaute Impliqué
Bonsoir à tous,

J'ai l'impression que tu cherches à calculer la première échéance d'un remboursement de crédit avec progressivité des échéances de façon à avoir un capital restant dû particulier (1.000.000) après une durée d'amortissement donnée (40 trimestres).

Comme disait Dranreb, tu peux inverser la fonction et obtenir l'échéance directement :
Echéance_départ =(capital_emprunté*(1+tx_trim)^(4*durée)-V_résiduelle)/(((1+tx_prog)^(4*durée)-(1+tx_trim)^(4*durée))/(tx_prog-tx_trim))

Ça s'obtient en calculant le capital restant dû (CRD) à chaque échéance et en faisant CRD(40)=1.000.000

En passant, la formule du CRD : CRD(n)=(capital_emprunté*(1+tx_trim)^n-Echéance_départ*((1+tx_prog)^n-(1+tx_trim)^n)/(tx_prog-tx_trim))

n représente le trimestre, tx_trim est le taux proportionnel trimestriel (ton 1,5%/4), tx_prog est le taux de progression des échéances trimestrielles.

Remarques :
1) perso je ne travaille jamais en proportionnel avec des calculs actuariels. J'ai gardé ici ta façon de faire.
2) tu mélanges des durées en années, des taux annuels et trimestriels et des remboursements trimestriels


Naturellement, si l'utilisation du solveur t'est imposée, laisse tomber le calcul direct.

Cordialement
 

DJARNAUD

XLDnaute Occasionnel
Bonjour ODVJ,

Merci beaucoup pour votre réponse.
C'est exactement ce que je cherchais. La progressivité dépassant mes compétences en mathématiques financières, je comptais laisser ce travail au solver ;)

Je suppose que vous travaillez donc en taux équivalents pour des calculs actuariels?
 

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly