OVH Cloud OVH Cloud

Seulement deux valeurs d'erreur !

4 réponses
Avatar
garnote
Bonjour,

Cette macro remplit de nombres la plage A1:B145
Tout est OK sauf pour les celllules B2 et B3 qui
contiennent #VALEUR!
Alors pour quelle raison le calcul génère-t-il une
erreur seulement pour ces deux valeurs ?
Pourtant, quand j'utilise la fonction dans un cellule,
sans passer par la macro, le calcul s'effectue correctement.
Précision des calculs ?

Sub XXX()
Dim vy As Double
Dim vx(1 To 145, 1) As Double
pas = WorksheetFunction.Pi / 72
For i = 1 To 145
vx(i, 1) = (i - 1) * pas
Next i
Range("A1:A145").Value = vx
f = "sin(x)+sin(3*x)/3+sin(5*x)/5+sin(7*x)/7+sin(9*x)/9+sin(11*x)/11" _
& "+sin(13*x)/13+sin(15*x)/15+sin(17*x)/17"
For j = 1 To 145
Cells(j, 2) = Evaluate(Replace(f, "x", Str(vx(j, 1))))
Next j
End Sub

Serge

4 réponses

Avatar
Modeste
Bonjour Serge,

les deux formules en cause sont :

sin( 4.36332312998582E-02)+sin(3* 4.36332312998582E-
02)/3+sin(5* 4.36332312998582E-02)/5+sin(7*
4.36332312998582E-02)/7+sin(9* 4.36332312998582E-02)/9+sin
(11* 4.36332312998582E-02)/11+sin(13* 4.36332312998582E-
02)/13+sin(15* 4.36332312998582E-02)/15+sin(17*
4.36332312998582E-02)/17

et
sin( 8.72664625997165E-02)+sin(3* 8.72664625997165E-
02)/3+sin(5* 8.72664625997165E-02)/5+sin(7*
8.72664625997165E-02)/7+sin(9* 8.72664625997165E-02)/9+sin
(11* 8.72664625997165E-02)/11+sin(13* 8.72664625997165E-
02)/13+sin(15* 8.72664625997165E-02)/15+sin(17*
8.72664625997165E-02)/17

ou l'on remarque l'exponentiation E-

peut etre en essayant avec un autre replace "E-" par "^-"

;-)))
@+
-----Message d'origine-----
Bonjour,

Cette macro remplit de nombres la plage A1:B145
Tout est OK sauf pour les celllules B2 et B3 qui
contiennent #VALEUR!
Alors pour quelle raison le calcul génère-t-il une
erreur seulement pour ces deux valeurs ?
Pourtant, quand j'utilise la fonction dans un cellule,
sans passer par la macro, le calcul s'effectue
correctement.

Précision des calculs ?

Sub XXX()
Dim vy As Double
Dim vx(1 To 145, 1) As Double
pas = WorksheetFunction.Pi / 72
For i = 1 To 145
vx(i, 1) = (i - 1) * pas
Next i
Range("A1:A145").Value = vx
f = "sin(x)+sin(3*x)/3+sin(5*x)/5+sin(7*x)/7+sin
(9*x)/9+sin(11*x)/11" _

& "+sin(13*x)/13+sin(15*x)/15+sin(17*x)/17"
For j = 1 To 145
Cells(j, 2) = Evaluate(Replace(f, "x", Str(vx(j, 1))))
Next j
End Sub

Serge


.



Avatar
Modeste
Re -bonjour Serge
ma soluce ne fonctionne pas
peut-etre encore la limite des 19 caractères
significatifs ?????

mais en changeant le type
c'est oK....

Dim vx(1 To 200, 1) As Single
@+

-----Message d'origine-----
Bonjour,

Cette macro remplit de nombres la plage A1:B145
Tout est OK sauf pour les celllules B2 et B3 qui
contiennent #VALEUR!
Alors pour quelle raison le calcul génère-t-il une
erreur seulement pour ces deux valeurs ?
Pourtant, quand j'utilise la fonction dans un cellule,
sans passer par la macro, le calcul s'effectue
correctement.

Précision des calculs ?

Sub XXX()
Dim vy As Double
Dim vx(1 To 145, 1) As Double
pas = WorksheetFunction.Pi / 72
For i = 1 To 145
vx(i, 1) = (i - 1) * pas
Next i
Range("A1:A145").Value = vx
f = "sin(x)+sin(3*x)/3+sin(5*x)/5+sin(7*x)/7+sin
(9*x)/9+sin(11*x)/11" _

& "+sin(13*x)/13+sin(15*x)/15+sin(17*x)/17"
For j = 1 To 145
Cells(j, 2) = Evaluate(Replace(f, "x", Str(vx(j, 1))))
Next j
End Sub

Serge


.



Avatar
Daniel.M
Allo,

mais en changeant le type
c'est oK....
Dim vx(1 To 200, 1) As Single
@+


Ou en formattant la valeur vx avant la substitution par replace() :

Cells(j,2) = Evaluate(Replace(f, "x", Format(vx(j, 1), "0.0000000000000")))

Salutations,

Daniel M.

Avatar
garnote
Salut Modeste et Daniel,

Deux «cellules erronées» sur 1305, c'était inacceptable !
Ma route vers une onde carrée est maintenant
absolument irréprochable !
Et si mon virus ne bougeait pas, à la grande déception de Modeste,
là ça gigote en grand !!!

;-)))

Serge