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
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
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
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
.
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
.
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
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
.
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() :
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
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 !!!
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 !!!