OVH Cloud OVH Cloud

incompatibilité de type

4 réponses
Avatar
Pignouf
Bonjour =E0 tous,

J'ai r=E9dig=E9 la macro suivante, elle est longue mais=20
compr=E9hensible, lors de l'=E9x=E9cution de la macro je=20
re=E7ois une erreur (13), incompatibilit=E9 de type, en=20
passant au debug, je constate que le probl=E8me se situe au=20
niveau du calcule de la premi=E8re =E9ch=E9ance moyenne, plus=20
pr=E9cis=E9ment au niveau de la ligne Worksheets
("feuil1").Cells(9 + k, 3).Formula =3D "=3D 1 / Ln(Cells(9 +=20
k, 1)) * Ln(1 / Cells(8, 2) * Cells(9 + k, 10))"
L'erreur se situe sur ln (cells(9+k,1))... cells(9+k,1)=20
n'est pas bon. Comment puis je r=E9soudre le probl=E8me ?

Merci de l'aide que vous pouvez me donner. (la macros se=20
trouve apr=E8s)

Sub rendement()
Dim ctot As Integer
Dim dtot As Integer
Dim k As Single
'
'Calcul des capitaux in et out
'
Worksheets("feuil1").Cells(8, 2).Formula =3D "=3Dsum(b2:b3)"
Worksheets("feuil1").Cells(8, 4).Formula =3D "=3Dsum(d2:d6)"
'
'Calcul des =E9ch=E9ances moyennes si l'int=E9r=EAt initial est=20
suppos=E9 nul
'
Worksheets("feuil1").Cells(9, 3).Value=20
=3D "=3D1/ctot*sumproduct(b2:b3,c2:c3)"
Worksheets("feuil1").Cells(9, 5).Value=20
=3D "=3D1/dtot*sumproduct(d2:d6,e2:e6)"
'
'calcul de la suite des taux ainsi que des =E9ch=E9ances=20
moyennes correspondantes
'
For k =3D 1 To 50
Worksheets("feuil1").Cells(9 + k, 2).Value =3D (Cells
(8, 2) / Cells(8, 4)) ^ (1 / (Cells(8 + k, 3) - Cells(8 +=20
k, 5))) - 1
Worksheets("feuil1").Cells(9 + k, 1).Value =3D (1 +=20
Cells(9 + k, 2)) ^ (-1)
'calcul de la premi=E8re =E9ch=E9ance moyenne
l =3D 0
For m =3D 2 To 3
Worksheets("feuil1").Cells(9 + k, 10).Value =3D l +=20
Cells(m, 2) * (Cells(9 + k, 1) ^ (Cells(m, 3)))
l =3D Cells(9 + k, 10)
Next m
Worksheets("feuil1").Cells(9 + k, 3).Formula =3D "=3D 1 /=20
Ln(Cells(9 + k, 1)) * Ln(1 / Cells(8, 2) * Cells(9 + k,=20
10))"
'calcul de la seconde =E9ch=E9ance moyenne
n =3D 0
For p =3D 2 To 6
Worksheets("feuil1").Cells(9 + k, 11).Value =3D n +=20
Cells(p, 4) * (Cells(9 + k, 1) ^ (Cells(p, 5)))
n =3D Cells(9 + k, 11)
Next p
Worksheets("feuil1").Cells(9 + k, 5).Formula =3D "=3D 1 /=20
Ln(Cells(9 + k, 1)) * Ln(1 / Cells(8, 4) * Cells(9 + k,=20
11))"
Next k
End Sub

4 réponses

Avatar
Maxence HUBICHE
Bonsoir !

"= 1 / Ln(" & Cells(9 +
k, 1).address & ") * Ln(1 / " & Cells(8, 2).address & " * " & Cells(9 + k,
10).address & ")"


devrait faire l'affaire :)
--
----------------------------------------------------------------------------
-
Maxence HUBICHE
Formateur et développeur indépendant
Modérateur/rédacteur sur http://www.developpez.com

"Pignouf" a écrit dans le message de
news: 036201c3cf1d$419b16b0$
Bonjour à tous,

J'ai rédigé la macro suivante, elle est longue mais
compréhensible, lors de l'éxécution de la macro je
reçois une erreur (13), incompatibilité de type, en
passant au debug, je constate que le problème se situe au
niveau du calcule de la première échéance moyenne, plus
précisément au niveau de la ligne Worksheets
("feuil1").Cells(9 + k, 3).Formula = "= 1 / Ln(Cells(9 +
k, 1)) * Ln(1 / Cells(8, 2) * Cells(9 + k, 10))"
L'erreur se situe sur ln (cells(9+k,1))... cells(9+k,1)
n'est pas bon. Comment puis je résoudre le problème ?

Merci de l'aide que vous pouvez me donner. (la macros se
trouve après)

Sub rendement()
Dim ctot As Integer
Dim dtot As Integer
Dim k As Single
'
'Calcul des capitaux in et out
'
Worksheets("feuil1").Cells(8, 2).Formula = "=sum(b2:b3)"
Worksheets("feuil1").Cells(8, 4).Formula = "=sum(d2:d6)"
'
'Calcul des échéances moyennes si l'intérêt initial est
supposé nul
'
Worksheets("feuil1").Cells(9, 3).Value
= "=1/ctot*sumproduct(b2:b3,c2:c3)"
Worksheets("feuil1").Cells(9, 5).Value
= "=1/dtot*sumproduct(d2:d6,e2:e6)"
'
'calcul de la suite des taux ainsi que des échéances
moyennes correspondantes
'
For k = 1 To 50
Worksheets("feuil1").Cells(9 + k, 2).Value = (Cells
(8, 2) / Cells(8, 4)) ^ (1 / (Cells(8 + k, 3) - Cells(8 +
k, 5))) - 1
Worksheets("feuil1").Cells(9 + k, 1).Value = (1 +
Cells(9 + k, 2)) ^ (-1)
'calcul de la première échéance moyenne
l = 0
For m = 2 To 3
Worksheets("feuil1").Cells(9 + k, 10).Value = l +
Cells(m, 2) * (Cells(9 + k, 1) ^ (Cells(m, 3)))
l = Cells(9 + k, 10)
Next m
Worksheets("feuil1").Cells(9 + k, 3).Formula = "= 1 /
Ln(Cells(9 + k, 1)) * Ln(1 / Cells(8, 2) * Cells(9 + k,
10))"
'calcul de la seconde échéance moyenne
n = 0
For p = 2 To 6
Worksheets("feuil1").Cells(9 + k, 11).Value = n +
Cells(p, 4) * (Cells(9 + k, 1) ^ (Cells(p, 5)))
n = Cells(9 + k, 11)
Next p
Worksheets("feuil1").Cells(9 + k, 5).Formula = "= 1 /
Ln(Cells(9 + k, 1)) * Ln(1 / Cells(8, 4) * Cells(9 + k,
11))"
Next k
End Sub
Avatar
Clément Marcotte
Bonjour,

L'erreur se situe sur ln (cells(9+k,1))... cells(9+k,1)
n'est pas bon.



Excel ne connaît que LOG() et LOG10(). Remplace ton ln par LOG

Avatar
Bonjour Maxence,

Je te remercie de ta soluce, elle fonctionne parfaitement.
Merci également pour le très bon et beau lien
http://www.developpez.com
Bien à toi Pignouf.

Bonsoir !

"= 1 / Ln(" & Cells(9 +
k, 1).address & ") * Ln(1 / " & Cells(8, 2).address & "
* " & Cells(9 + k,

10).address & ")"


devrait faire l'affaire :)
--
---------------------------------------------------------
-------------------

-
Maxence HUBICHE
Formateur et développeur indépendant
Modérateur/rédacteur sur http://www.developpez.com



Avatar
Bonjour Clément,

Merci d'avoir éssayé de m'aider. Excel connait bien ln.

Bien à toi Pignouf
Bonjour,

L'erreur se situe sur ln (cells(9+k,1))... cells(9+k,1)
n'est pas bon.



Excel ne connaît que LOG() et LOG10(). Remplace ton ln
par LOG