Bonjours,
Je repose ma question vu que personne ne m'a répondu : peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes calculs en Vba
( je
mes mes resultats dans des tableaux SignalE(), SignalS() et x() ).
J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que je mets mes
tableaux
dans des cellules Excel : celà fait une perte de temps énorme => il
faudrait
que je mette directement mes valeur dans mon graphique (je veux pouvoir
agir
sur différents termes de mes fonctions et voir en temps réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est pas
valide car mes formules sont trop longues (dans une cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un autre):
Rappel : un signal carré est une somme infinie de sigaux sinusoidaux du
type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par defaut 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par defaut
= -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par defaut +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par defaut = 500
Dim pasX As Double 'interval entre chaque points sur l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des a / b(i) * sin(w
*
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) + Eo, "0.000E+0") 'ajout de la
valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value = SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value = SignalS(j)
Next j
End Sub
Bonjours,
Je repose ma question vu que personne ne m'a répondu : peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes calculs en Vba
( je
mes mes resultats dans des tableaux SignalE(), SignalS() et x() ).
J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que je mets mes
tableaux
dans des cellules Excel : celà fait une perte de temps énorme => il
faudrait
que je mette directement mes valeur dans mon graphique (je veux pouvoir
agir
sur différents termes de mes fonctions et voir en temps réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est pas
valide car mes formules sont trop longues (dans une cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un autre):
Rappel : un signal carré est une somme infinie de sigaux sinusoidaux du
type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par defaut 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par defaut
= -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par defaut +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par defaut = 500
Dim pasX As Double 'interval entre chaque points sur l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des a / b(i) * sin(w
*
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) + Eo, "0.000E+0") 'ajout de la
valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value = SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value = SignalS(j)
Next j
End Sub
Bonjours,
Je repose ma question vu que personne ne m'a répondu : peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes calculs en Vba
( je
mes mes resultats dans des tableaux SignalE(), SignalS() et x() ).
J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que je mets mes
tableaux
dans des cellules Excel : celà fait une perte de temps énorme => il
faudrait
que je mette directement mes valeur dans mon graphique (je veux pouvoir
agir
sur différents termes de mes fonctions et voir en temps réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est pas
valide car mes formules sont trop longues (dans une cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un autre):
Rappel : un signal carré est une somme infinie de sigaux sinusoidaux du
type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par defaut 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par defaut
= -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par defaut +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par defaut = 500
Dim pasX As Double 'interval entre chaque points sur l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des a / b(i) * sin(w
*
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) + Eo, "0.000E+0") 'ajout de la
valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value = SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value = SignalS(j)
Next j
End Sub
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value =
SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value =
SignalS(j)
Next j
End Sub
.
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value =
SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value =
SignalS(j)
Next j
End Sub
.
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value =
SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value =
SignalS(j)
Next j
End Sub
.
Bonjour,
Je n'ai pas la réponse pour l'aspect graphique.
Peux-tu contourner la longueur de tes formules par un calcul direct en VBA
et inscrire seulement le résultat dans les cells ?
par ex :
Range("AF11").FormulaLocal = "=SUM(RC[-" & z & "]:RC[-1])"
avec la conversion en anglais des fonctions ... ainsi tu n'as pas de
limite
de saisie.
--
à+twinley
"Emcy" a écrit dans le message de
news:%Bonjours,
Je repose ma question vu que personne ne m'a répondu : peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes calculs en Vba
( jemes mes resultats dans des tableaux SignalE(), SignalS() et x() ).
J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que je mets mes
tableauxdans des cellules Excel : celà fait une perte de temps énorme => il
faudraitque je mette directement mes valeur dans mon graphique (je veux pouvoir
agirsur différents termes de mes fonctions et voir en temps réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est pas
valide car mes formules sont trop longues (dans une cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un autre):
Rappel : un signal carré est une somme infinie de sigaux sinusoidaux du
typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par defaut > 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par defaut
= -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par defaut > +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par defaut = 500
Dim pasX As Double 'interval entre chaque points sur l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des a / b(i) *
sin(w
*b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) + Eo, "0.000E+0") 'ajout de la
valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value = SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value = SignalS(j)
Next j
End Sub
Bonjour,
Je n'ai pas la réponse pour l'aspect graphique.
Peux-tu contourner la longueur de tes formules par un calcul direct en VBA
et inscrire seulement le résultat dans les cells ?
par ex :
Range("AF11").FormulaLocal = "=SUM(RC[-" & z & "]:RC[-1])"
avec la conversion en anglais des fonctions ... ainsi tu n'as pas de
limite
de saisie.
--
à+twinley
"Emcy" <ten.etsop@ycme.ycme> a écrit dans le message de
news:%23FGgxc4pEHA.324@TK2MSFTNGP11.phx.gbl...
Bonjours,
Je repose ma question vu que personne ne m'a répondu : peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes calculs en Vba
( je
mes mes resultats dans des tableaux SignalE(), SignalS() et x() ).
J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que je mets mes
tableaux
dans des cellules Excel : celà fait une perte de temps énorme => il
faudrait
que je mette directement mes valeur dans mon graphique (je veux pouvoir
agir
sur différents termes de mes fonctions et voir en temps réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est pas
valide car mes formules sont trop longues (dans une cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un autre):
Rappel : un signal carré est une somme infinie de sigaux sinusoidaux du
type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par defaut > 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par defaut
= -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par defaut > +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par defaut = 500
Dim pasX As Double 'interval entre chaque points sur l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des a / b(i) *
sin(w
*
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) + Eo, "0.000E+0") 'ajout de la
valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value = SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value = SignalS(j)
Next j
End Sub
Bonjour,
Je n'ai pas la réponse pour l'aspect graphique.
Peux-tu contourner la longueur de tes formules par un calcul direct en VBA
et inscrire seulement le résultat dans les cells ?
par ex :
Range("AF11").FormulaLocal = "=SUM(RC[-" & z & "]:RC[-1])"
avec la conversion en anglais des fonctions ... ainsi tu n'as pas de
limite
de saisie.
--
à+twinley
"Emcy" a écrit dans le message de
news:%Bonjours,
Je repose ma question vu que personne ne m'a répondu : peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes calculs en Vba
( jemes mes resultats dans des tableaux SignalE(), SignalS() et x() ).
J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que je mets mes
tableauxdans des cellules Excel : celà fait une perte de temps énorme => il
faudraitque je mette directement mes valeur dans mon graphique (je veux pouvoir
agirsur différents termes de mes fonctions et voir en temps réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est pas
valide car mes formules sont trop longues (dans une cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un autre):
Rappel : un signal carré est une somme infinie de sigaux sinusoidaux du
typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par defaut > 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par defaut
= -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par defaut > +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par defaut = 500
Dim pasX As Double 'interval entre chaque points sur l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des a / b(i) *
sin(w
*b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) + Eo, "0.000E+0") 'ajout de la
valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value = SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value = SignalS(j)
Next j
End Sub
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value SignalS(j)
Next j
End Sub
.
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value SignalS(j)
Next j
End Sub
.
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value SignalS(j)
Next j
End Sub
.
bonjours,
j'ai déja essayé mais ça me fait une erreur d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau dans cette propriété
: il faut mettre un array => je ne sais pas convertir un tableau standard en
array.
"Denis" a écrit dans le message de
news:063a01c4a799$42bc5450$
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-êtrequ'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( jemes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableauxdans des cellules Excel : celà fait une perte de temps
énorme => il faudraitque je mette directement mes valeur dans mon graphique
(je veux pouvoir agirsur différents termes de mes fonctions et voir en temps
réel leschangements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pasvalide car mes formules sont trop longues (dans une
celluleExcel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500Dim pasX As Double 'interval entre chaque points sur
l'axe des xpasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value >
SignalE(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value >
SignalS(j)Next j
End Sub
.
bonjours,
j'ai déja essayé mais ça me fait une erreur d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau dans cette propriété
: il faut mettre un array => je ne sais pas convertir un tableau standard en
array.
"Denis" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:063a01c4a799$42bc5450$a501280a@phx.gbl...
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value >
SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value >
SignalS(j)
Next j
End Sub
.
bonjours,
j'ai déja essayé mais ça me fait une erreur d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau dans cette propriété
: il faut mettre un array => je ne sais pas convertir un tableau standard en
array.
"Denis" a écrit dans le message de
news:063a01c4a799$42bc5450$
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-êtrequ'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( jemes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableauxdans des cellules Excel : celà fait une perte de temps
énorme => il faudraitque je mette directement mes valeur dans mon graphique
(je veux pouvoir agirsur différents termes de mes fonctions et voir en temps
réel leschangements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pasvalide car mes formules sont trop longues (dans une
celluleExcel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500Dim pasX As Double 'interval entre chaque points sur
l'axe des xpasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w * b
(j) * x(k))SignalS(k) = SignalS(k) + a / b(j) * Sin(w * b
(j) * x(k) -Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value >
SignalE(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value >
SignalS(j)Next j
End Sub
.
-----Message d'origine-----
bonjours,
j'ai déja essayé mais ça me fait une erreur
d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau
dans cette propriété
: il faut mettre un array => je ne sais pas convertir un
tableau standard en
array.
"Denis" a écrit
dans le message de
news:063a01c4a799$42bc5450$
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-êtrequ'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( jemes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableauxdans des cellules Excel : celà fait une perte de temps
énorme => il faudraitque je mette directement mes valeur dans mon graphique
(je veux pouvoir agirsur différents termes de mes fonctions et voir en temps
réel leschangements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pasvalide car mes formules sont trop longues (dans une
celluleExcel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500Dim pasX As Double 'interval entre chaque points sur
l'axe des xpasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w *
b
(j) * x(k))SignalS(k) = SignalS(k) + a / b(j) * Sin(w *
b
(j) * x(k) -Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value =
SignalE(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value =
SignalS(j)Next j
End Sub
.
.
-----Message d'origine-----
bonjours,
j'ai déja essayé mais ça me fait une erreur
d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau
dans cette propriété
: il faut mettre un array => je ne sais pas convertir un
tableau standard en
array.
"Denis" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:063a01c4a799$42bc5450$a501280a@phx.gbl...
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w *
b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w *
b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value =
SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value =
SignalS(j)
Next j
End Sub
.
.
-----Message d'origine-----
bonjours,
j'ai déja essayé mais ça me fait une erreur
d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau
dans cette propriété
: il faut mettre un array => je ne sais pas convertir un
tableau standard en
array.
"Denis" a écrit
dans le message de
news:063a01c4a799$42bc5450$
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-êtrequ'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( jemes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableauxdans des cellules Excel : celà fait une perte de temps
énorme => il faudraitque je mette directement mes valeur dans mon graphique
(je veux pouvoir agirsur différents termes de mes fonctions et voir en temps
réel leschangements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pasvalide car mes formules sont trop longues (dans une
celluleExcel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500Dim pasX As Double 'interval entre chaque points sur
l'axe des xpasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w *
b
(j) * x(k))SignalS(k) = SignalS(k) + a / b(j) * Sin(w *
b
(j) * x(k) -Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value =
SignalE(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value =
SignalS(j)Next j
End Sub
.
.
-----Message d'origine-----
bonjours,
j'ai déja essayé mais ça me fait une erreur
d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau
dans cette propriété
: il faut mettre un array => je ne sais pas convertir un
tableau standard en
array.
"Denis" a écrit
dans le message de
news:063a01c4a799$42bc5450$
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-êtrequ'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( jemes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableauxdans des cellules Excel : celà fait une perte de temps
énorme => il faudraitque je mette directement mes valeur dans mon graphique
(je veux pouvoir agirsur différents termes de mes fonctions et voir en temps
réel leschangements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pasvalide car mes formules sont trop longues (dans une
celluleExcel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500Dim pasX As Double 'interval entre chaque points sur
l'axe des xpasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w *
b
(j) * x(k))SignalS(k) = SignalS(k) + a / b(j) * Sin(w *
b
(j) * x(k) -Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value >SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value >SignalS(j)
Next j
End Sub
.
.
-----Message d'origine-----
bonjours,
j'ai déja essayé mais ça me fait une erreur
d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau
dans cette propriété
: il faut mettre un array => je ne sais pas convertir un
tableau standard en
array.
"Denis" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:063a01c4a799$42bc5450$a501280a@phx.gbl...
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis
-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-être
qu'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( je
mes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utilise
un graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableaux
dans des cellules Excel : celà fait une perte de temps
énorme => il faudrait
que je mette directement mes valeur dans mon graphique
(je veux pouvoir agir
sur différents termes de mes fonctions et voir en temps
réel les
changements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pas
valide car mes formules sont trop longues (dans une
cellule
Excel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):
Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du type
a.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2
Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000
Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000
Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011
Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011
Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500
Dim pasX As Double 'interval entre chaque points sur
l'axe des x
pasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *
b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /
racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w *
b
(j) * x(k))
SignalS(k) = SignalS(k) + a / b(j) * Sin(w *
b
(j) * x(k) -
Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeur
continue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value >SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value >SignalS(j)
Next j
End Sub
.
.
-----Message d'origine-----
bonjours,
j'ai déja essayé mais ça me fait une erreur
d'execution : "impossible de
définir la propriété XValue"
=> il est impossible d'affecter directement un tableau
dans cette propriété
: il faut mettre un array => je ne sais pas convertir un
tableau standard en
array.
"Denis" a écrit
dans le message de
news:063a01c4a799$42bc5450$
Bonjour,
ton graphique existant déjà (avec tes 2 courbes) et étant
sélectionné
ActiveChart.SeriesCollection(1).XValues = x
ActiveChart.SeriesCollection(2).XValues = x
ActiveChart.SeriesCollection(1).Values = SignalE
ActiveChart.SeriesCollection(2).Values = SignalS
Et c'est tracé
Denis-----Message d'origine-----
Bonjours,
Je repose ma question vu que personne ne m'a répondu :
peut-êtrequ'aujourd'hui quelqu'un aura la réponse...
Je voudrais tracer des fonctions : pour cela je fait mes
calculs en Vba ( jemes mes resultats dans des tableaux SignalE(), SignalS()
et x() ). J'utiliseun graphique en nuage de points.
Le problème est que pour tacer mes courbes, il faut que
je mets mes tableauxdans des cellules Excel : celà fait une perte de temps
énorme => il faudraitque je mette directement mes valeur dans mon graphique
(je veux pouvoir agirsur différents termes de mes fonctions et voir en temps
réel leschangements).
J'ai déja essayé la méthode de serge Garneau : elle n'est
pasvalide car mes formules sont trop longues (dans une
celluleExcel, il y a un nombre de caractères limités).
Quelqu'un a-t-il une autre solution ?
voici les fonctions que je trace (un signal carré + un
autre):Rappel : un signal carré est une somme infinie de sigaux
sinusoidaux du typea.sin(w.t+phi)
Option Explicit
Option Base 1 ' Attribue la valeur 1 aux indices de
tableau par défaut
Sub SignalCarré()
Dim j, k As Integer
Dim FeuilleTravail As Object
Set FeuilleTravail = ActiveWorkbook.Sheets("Carré")
Dim Ea As Double 'Amplitude du signal d'entrée
Ea = FeuilleTravail.Range("B1").Value 'valeur par
defaut = 2Dim Eo As Double 'Offset du signal d'entrée
Eo = FeuilleTravail.Range("B2").Value 'valeur par
defaut = 0
Dim f As Double 'Fréquence du signal s'entrée
f = FeuilleTravail.Range("B3").Value 'valeur par
defaut = 1000000Dim Er As Double 'rapport cyclique du signal d'entrée
Er = FeuilleTravail.Range("B4").Value 'non utilisé
Dim R As Double 'résistance du filtre
R = FeuilleTravail.Range("B20").Value 'valeur par
defaut = 1000Dim C As Double 'capacité du filtre
C = FeuilleTravail.Range("B21").Value 'valeur par
defaut = 0.0000000001
Dim i As Integer 'nombre de porteuses
i = FeuilleTravail.Range("B5").Value 'valeur par
defaut = 20
Dim pX As Double 'borne inférieur sur axe des x
pX = FeuilleTravail.Range("B15").Value 'valeur par
defaut = -0.0000011Dim gX As Double 'borne supérieur sur axe des x
gX = FeuilleTravail.Range("B16").Value 'valeur par
defaut = +0.0000011Dim nX As Integer 'Nombre de points sur axe des x
nX = FeuilleTravail.Range("B17").Value 'valeur par
defaut = 500Dim pasX As Double 'interval entre chaque points sur
l'axe des xpasX = (gX - pX) / (nX - 1)
Dim x() As Double 'Tableau des valeurs de x
ReDim x(nX)
For j = 1 To (nX)
x(j) = Format(pX + (pasX) * (j - 1), "0.000E+0")
Next j
Dim a As Double ' = 2*Ea/PI
a = 2 * Ea / 3.14
Dim w As Double ' = 2*PI*f
w = 2 * 3.14 * f
Dim wRC As Double
wRC = w * R * C
Dim b() As Integer 'b(i) = ((i-1)*2+1)
ReDim b(i)
For j = 1 To i
b(j) = ((j - 1) * 2 + 1)
Next j
Dim SignalE() As Double 'calcul signal carré - somme des
a / b(i) * sin(w *b(i) * t)
Dim SignalS() As Double 'calcul signal de sortie filtre
RC : T = 1 /racine(1+(w.RC)^2)
Dim SignalTemp, Phi As Double
ReDim SignalE(nX)
ReDim SignalS(nX)
For k = 1 To nX
For j = 1 To i
SignalE(k) = SignalE(k) + a / b(j) * Sin(w *
b
(j) * x(k))SignalS(k) = SignalS(k) + a / b(j) * Sin(w *
b
(j) * x(k) -Atn(wRC * b(j))) / Sqr(1 + (wRC * b(j)) ^ 2)
Next j
SignalE(k) = Format(SignalE(k) +
Eo, "0.000E+0") 'ajout de la valeurcontinue + changement du format pour meilleur lisibilité
SignalS(k) = Format(SignalS(k) + Eo, "0.000E+0")
Next k
For j = 1 To nX
ActiveWorkbook.Sheets("Valeur").Cells(j, 1).Value = x
(j)ActiveWorkbook.Sheets("Valeur").Cells(j, 2).Value >SignalE(j)
ActiveWorkbook.Sheets("Valeur").Cells(j, 3).Value >SignalS(j)
Next j
End Sub
.
.
Je confirme ta macro fonctionne mais pourquoi ça ne marche pas dans mon cas
?
Peux-tu essayer de faire marcher cette macro (pour un graphique en nuage de
point avec deux courbe):
Je confirme ta macro fonctionne mais pourquoi ça ne marche pas dans mon cas
?
Peux-tu essayer de faire marcher cette macro (pour un graphique en nuage de
point avec deux courbe):
Je confirme ta macro fonctionne mais pourquoi ça ne marche pas dans mon cas
?
Peux-tu essayer de faire marcher cette macro (pour un graphique en nuage de
point avec deux courbe):