je peux trouver la variable r valant entre 0.01 à 0.9999999999999 pour résoudre
toute équation égale à 0
avec la macro "test" mais je n'y arrive pas avec un fonction perso,
voici ma solution avec une macro et j'aimerais la transformer en une fonction
générale,
Sub test()
Dim i, z, a1, a2, r
FVt = 210
PV1 = 100
PV2 = 101
t1 = 0.5
t2 = 0.75
a1 = "0.0"
For i = 0 To 9
r = CDbl(Str("" & a1 & i))
z = Exp(Application.Ln((FVt - PV1 * (1 + r) ^ t1) / PV2) / t2) - 1 - r
If z < 0 Then
a1 = Str("" & a1 & i - 1)
i = Empty
If a2 = z Then Exit For
End If
a2 = z
Next
MsgBox CDbl(a1)
End Sub
voici ou je suis rendu en utilisant Evaluate et des cellules nommées, mais ce
n'est pas bon
Function r_value(FVt, PV1, PV2, t1, t2, r, equation)
a1 = [r]
For i = 0 To 9
[r_v] = CDbl(Str("" & a1 & i))
z = Evaluate(equation)
If z < 0 Then
a1 = Str("" & a1 & i - 1)
i = Empty
If a2 = z Then Exit For
End If
a2 = z
Next
r_value = CDbl(a1)
End Function
merci par avance de passer du temps sur mon problème,
j'ai été pas mal short dans mes remarques sur mon dernier message , je me repend et reprend, en voici les détails:
lorsque j'exécute la fonction en pas à pas je peut voir que peu importe la valeur de [R_V] z est toujours égal à 0.120542711670023 donc la condition If z < 0 Then n'est jamais vrai
c'est à dire lorsque i prend la valeur entre 0 et 8 [R_V] prend la valeur entre 0.01 et 0.09
et ensuite i prend la valeur de 9 [R_V] prend la valeur de 0.1 la boucle est complétée et le résultat est 0.1
isabelle
salut Denis,
j'ai été pas mal short dans mes remarques sur mon dernier message ,
je me repend et reprend,
en voici les détails:
lorsque j'exécute la fonction en pas à pas
je peut voir que peu importe la valeur de [R_V]
z est toujours égal à 0.120542711670023
donc la condition
If z < 0 Then
n'est jamais vrai
c'est à dire lorsque i prend la valeur entre 0 et 8
[R_V] prend la valeur entre 0.01 et 0.09
et ensuite i prend la valeur de 9
[R_V] prend la valeur de 0.1
la boucle est complétée et le résultat est 0.1
j'ai été pas mal short dans mes remarques sur mon dernier message , je me repend et reprend, en voici les détails:
lorsque j'exécute la fonction en pas à pas je peut voir que peu importe la valeur de [R_V] z est toujours égal à 0.120542711670023 donc la condition If z < 0 Then n'est jamais vrai
c'est à dire lorsque i prend la valeur entre 0 et 8 [R_V] prend la valeur entre 0.01 et 0.09
et ensuite i prend la valeur de 9 [R_V] prend la valeur de 0.1 la boucle est complétée et le résultat est 0.1
isabelle
MichD
Regarde ceci, je crois que c'est prometteur : http://cjoint.com/?DCuexzkrlqu
Regarde ceci, je crois que c'est prometteur : http://cjoint.com/?DCuexzkrlqu
Pour une personne retraitée, je trouve qu'Isabelle s'amuse avec des fonctions pour le moins ésotériques! ;-))
isabelle
salutatous,
désolé de mon retard, j'ai fait une petite escapade au grand village, Denis merci de ton effort, ça m'as donné l'idée de mettre r en variable " & r & " dans l'équation. je pense que c'est la seule solution pour garder "équation" en argument mais il y a un erreur(2015) sur la ligne z = Evaluate(équation) pourtant si j'enlève l'argument équation et que je remplace équation par "Exp(Ln((FVt-PV_1*(1+" & r & ")^t_1)/PV_2)/t_2)-1-" & r & "" cela fonctionne --> http://cjoint.com/?DCwb4QsT8Bp
en gardant les cellules nommées: FVt, PV_1, PV_2, t_1, t_2, équation contenant respectivement les valeurs de: 210, 100, 101, 0.5, 0.75, Exp(Ln((FVt-PV_1*(1+" & r & ")^t_1)/PV_2)/t_2)-1-" & r & "
Function r_value(FVt, PV1, PV2, t1, t2, équation) Dim i, z, x, b r = 0 x = 1 For i = 0 To 9 If i = 0 Then x = x + 1: b = 1 * 10 ^ x r = r + (1 / b) z = Evaluate(équation) If z < 0 Then If Len(r) = 19 Then Exit For i = Empty r = r - (1 / b) If i = 0 Then x = x + 1: b = 1 * 10 ^ x End If Next r_value = r End Function
ce que l'on ne ferait pas pour un membre de la famille ;-) encore merci! pour ton soutient, isabelle
ps/ Jacques, crois-tu que ma chance augmente ;-)
Le 2014-03-20 09:12, MichD a écrit :
Pour une personne retraitée, je trouve qu'Isabelle s'amuse avec des fonctions pour le moins ésotériques! ;-))
salutatous,
désolé de mon retard, j'ai fait une petite escapade au grand village,
Denis merci de ton effort, ça m'as donné l'idée de mettre r en variable " & r &
" dans l'équation.
je pense que c'est la seule solution pour garder "équation" en argument
mais il y a un erreur(2015) sur la ligne z = Evaluate(équation)
pourtant si j'enlève l'argument équation et que je remplace
équation par "Exp(Ln((FVt-PV_1*(1+" & r & ")^t_1)/PV_2)/t_2)-1-" & r & ""
cela fonctionne --> http://cjoint.com/?DCwb4QsT8Bp
en gardant les cellules nommées:
FVt, PV_1, PV_2, t_1, t_2, équation
contenant respectivement les valeurs de:
210, 100, 101, 0.5, 0.75, Exp(Ln((FVt-PV_1*(1+" & r & ")^t_1)/PV_2)/t_2)-1-" & r & "
Function r_value(FVt, PV1, PV2, t1, t2, équation)
Dim i, z, x, b
r = 0
x = 1
For i = 0 To 9
If i = 0 Then x = x + 1: b = 1 * 10 ^ x
r = r + (1 / b)
z = Evaluate(équation)
If z < 0 Then
If Len(r) = 19 Then Exit For
i = Empty
r = r - (1 / b)
If i = 0 Then x = x + 1: b = 1 * 10 ^ x
End If
Next
r_value = r
End Function
ce que l'on ne ferait pas pour un membre de la famille ;-)
encore merci! pour ton soutient,
isabelle
ps/ Jacques, crois-tu que ma chance augmente ;-)
Le 2014-03-20 09:12, MichD a écrit :
Pour une personne retraitée, je trouve qu'Isabelle s'amuse avec
des fonctions pour le moins ésotériques! ;-))
désolé de mon retard, j'ai fait une petite escapade au grand village, Denis merci de ton effort, ça m'as donné l'idée de mettre r en variable " & r & " dans l'équation. je pense que c'est la seule solution pour garder "équation" en argument mais il y a un erreur(2015) sur la ligne z = Evaluate(équation) pourtant si j'enlève l'argument équation et que je remplace équation par "Exp(Ln((FVt-PV_1*(1+" & r & ")^t_1)/PV_2)/t_2)-1-" & r & "" cela fonctionne --> http://cjoint.com/?DCwb4QsT8Bp
en gardant les cellules nommées: FVt, PV_1, PV_2, t_1, t_2, équation contenant respectivement les valeurs de: 210, 100, 101, 0.5, 0.75, Exp(Ln((FVt-PV_1*(1+" & r & ")^t_1)/PV_2)/t_2)-1-" & r & "
Function r_value(FVt, PV1, PV2, t1, t2, équation) Dim i, z, x, b r = 0 x = 1 For i = 0 To 9 If i = 0 Then x = x + 1: b = 1 * 10 ^ x r = r + (1 / b) z = Evaluate(équation) If z < 0 Then If Len(r) = 19 Then Exit For i = Empty r = r - (1 / b) If i = 0 Then x = x + 1: b = 1 * 10 ^ x End If Next r_value = r End Function
ce que l'on ne ferait pas pour un membre de la famille ;-) encore merci! pour ton soutient, isabelle
ps/ Jacques, crois-tu que ma chance augmente ;-)
Le 2014-03-20 09:12, MichD a écrit :
Pour une personne retraitée, je trouve qu'Isabelle s'amuse avec des fonctions pour le moins ésotériques! ;-))
isabelle
ha! c'est un problème de guillemets,comment les enlever ?
si j'écris en cellule A1 --> a1 + a2
Function test_evaluate(f) test_evaluate = Evaluate(f) End Function
et que je tape sur la feuille = evaluate(A1) j'obtient l'erreur 2015
si j'écris en cellule B1 et B2 les valeurs 4 et 5
Function test_evaluate(a1, a2) test_evaluate = Evaluate(a1 + a2) End Function
et je tape sur la feuille = evaluate(B1;B2) cela fonctionne
isabelle
ha! c'est un problème de guillemets,comment les enlever ?
si j'écris en cellule A1 --> a1 + a2
Function test_evaluate(f)
test_evaluate = Evaluate(f)
End Function
et que je tape sur la feuille = evaluate(A1)
j'obtient l'erreur 2015
si j'écris en cellule B1 et B2 les valeurs 4 et 5
Function test_evaluate(a1, a2)
test_evaluate = Evaluate(a1 + a2)
End Function
et je tape sur la feuille = evaluate(B1;B2)
cela fonctionne
ha! c'est un problème de guillemets,comment les enlever ?
si j'écris en cellule A1 --> a1 + a2
Function test_evaluate(f) test_evaluate = Evaluate(f) End Function
et que je tape sur la feuille = evaluate(A1) j'obtient l'erreur 2015
si j'écris en cellule B1 et B2 les valeurs 4 et 5
Function test_evaluate(a1, a2) test_evaluate = Evaluate(a1 + a2) End Function
et je tape sur la feuille = evaluate(B1;B2) cela fonctionne
isabelle
isabelle
pour simplifier ce problème de guillemets
sur la feuille: 2 cellules nommées valeur1 et valeur2, contenant les valeurs 1 et 2
Function test_evaluate1(v1, v2) ' sur la feuille =test_evaluate1(valeur1;valeur2) r = 0 test_evaluate1 = Evaluate("" & "valeur1+valeur2+" & r) End Function
Function test_evaluate2(f) ' sur la feuille =test_evaluate2(A4) cellule A4 contient "" & "valeur1+valeur2+" & r r = 0 test_evaluate2 = Evaluate(f) End Function
de souvenance Serge (tatanka) avait déjà amené un problème semblable mais je n'arrive pas à le retrouver et je ne me souvient pas s'il avait été résolu ?
isabelle
pour simplifier ce problème de guillemets
sur la feuille:
2 cellules nommées valeur1 et valeur2, contenant les valeurs 1 et 2
Function test_evaluate1(v1, v2) ' sur la feuille
=test_evaluate1(valeur1;valeur2)
r = 0
test_evaluate1 = Evaluate("" & "valeur1+valeur2+" & r)
End Function
Function test_evaluate2(f) ' sur la feuille =test_evaluate2(A4)
cellule A4 contient "" & "valeur1+valeur2+" & r
r = 0
test_evaluate2 = Evaluate(f)
End Function
de souvenance Serge (tatanka) avait déjà amené un problème semblable mais je
n'arrive pas à le retrouver et je ne me souvient pas s'il avait été résolu ?
sur la feuille: 2 cellules nommées valeur1 et valeur2, contenant les valeurs 1 et 2
Function test_evaluate1(v1, v2) ' sur la feuille =test_evaluate1(valeur1;valeur2) r = 0 test_evaluate1 = Evaluate("" & "valeur1+valeur2+" & r) End Function
Function test_evaluate2(f) ' sur la feuille =test_evaluate2(A4) cellule A4 contient "" & "valeur1+valeur2+" & r r = 0 test_evaluate2 = Evaluate(f) End Function
de souvenance Serge (tatanka) avait déjà amené un problème semblable mais je n'arrive pas à le retrouver et je ne me souvient pas s'il avait été résolu ?