Récupérer coefficients courbe de tendance

Résolu/Fermé
vanderik - 30 sept. 2010 à 10:33
 vanderik - 1 oct. 2010 à 03:00
Bonjour,

J'ai réalisé une macro sous Excel permettant de récupérer les coefficients de l'équation de la courbe de tendance d'une courbe donnée.
Pour cela j'ai utilisé le code suivant :

ActiveSheet.ChartObjects("Name").Activate
Worksheets("Sheet1").Range("A18").Value = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text (cette ligne me permet de récupérer l'équation dans la cellule A18)

Cells(29, 5) = Mid(Cells(18, 1), 4, 18) (ici je mets chaque coeff dans les cellules (29,i)
Cells(29, 6) = Mid(Cells(18, 1), 24, 20)
Cells(29, 7) = Mid(Cells(18, 1), 46, 20)
Cells(29, 8) = Mid(Cells(18, 1), 68, 20)
Cells(29, 9).Value = Mid(Cells(18, 1), 90, 20)
Cells(29, 10) = Mid(Cells(18, 1), 112, 20)
Cells(29, 11) = Mid(Cells(18, 1), 134, 19)

Et je ne comprends pas pourquoi, mais lorsque le coefficient est supérieur à 1 (par exemple 1,2147639300343) alors la valeur que je lis dans ma cellule ne tient pas compte de la virgule ! Pour tous les coeffs du genre 0, 768429452 pas de problème, la virgule après le 0 est prise en compte.

J'ai absolument besoin de beaucoup de chiffres significatifs (sinon l'équation de la courbe de tendance devient fausse avec peu de chiffres significatifs).

Si quelqu'un peut m'aider à comprendre pourquoi la virgule disparait après le 1 ?!
Merci beaucoup pour votre aide !


A voir également:

4 réponses

tedori Messages postés 24 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 30 septembre 2010 2
30 sept. 2010 à 11:22
Bonjour,
c'est un problème de séparateur décimal.
J'ai fais le test suivant :
Sub t()
Dim er As String
er = "0.1222"
Range("A1") = er
er = "0,1222"
Range("A2") = er
er = "1.1222"
Range("A3") = er
er = "1,1222"
Range("A4") = er
End Sub

et en effet dans A4, le séparateur décimal à disparu.
Il suffit de spécifier le séparateur décimal dans les outils linguistiques de Windows.

Sinon, pourquoi n'utilisez vous pas le solver d'excel pour résoudre ce type de problème?
2
Merci pour la réponse ! Le problème est résolu !
Par contre je ne connais pas le solver d'excel ? Il y a donc un autre moyen pour résoudre cela...?!
0
tedori Messages postés 24 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 30 septembre 2010 2
Modifié par tedori le 30/09/2010 à 11:52
Le solveur excel est accessible dans les options, compléments...
Je m'en sert pour tout et entre autre pour des problèmes d'identification de fonction.
Il permet donc de résoudre des problèmes d'optimisation tels que le votre. Par exemple :
- dans la première colonne : les valeurs des abscisses (xi)
- dans la deuxième colonne : les valeurs en ordonnée (yi)
- dans une troisième colonne : une fonction fi de xi et de coefficients. Celle ci peut être linéaire, polynomiale, etc.. (comme proposé par excel pour une courbe de tendance). On pourra prendre par exemple c1+c2*xi+c3*xi^2+c4*xi^3.
- dans une quatrième colonne, une fonction erreur (e). On pourra prendre l'erreur quadratique moyenne : ei = (fi-yi)^2
- Enfin on fait la somme de ces erreurs et là on "invoque" le solveur. On lui demande donc de minimiser la valeur de la cellule contenant la somme des erreurs en faisant varier la plage de cellules contenant les coefficients.

Ca parait peut être un peu compliqué la première fois mais la deuxième est un jeu d'enfant.
Enfin, je te conseille le site https://digilander.libero.it/_ppricerca/index.html contenant de nombreuses macro d'optimisation très bien développées.
0
Ok merci pour l'info ! Je vais tenter aussi avec cette solution.
à bientôt !
0