VBA - Virgule manquante dans m et b l'équation de droite

Fermé
Chips - 15 avril 2016 à 10:53
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 - 15 avril 2016 à 16:19
Bonjour,

J'ai un petit soucis concernant des équations de courbes de tendance, à partir d'un graphique qui a deux courbes de tendances linéaires, j'essaye de récupérer les m et b (y=mx+b) des deux équations pour les mettre dans des cases.

Le code que j'ai fonctionne très bien pour les afficher dans la MsgBox, mais une fois dans les cases les virgules disparaissent pour la moitié des valeurs ce qui m'embête quelque peu... Je cherche donc quelqu'un qui saurait comment les faire réapparaitre

Voici le code en question :


Sub Recup_eq_droite()

Dim Equation

With Feuil1.ChartObjects(1).Chart.SeriesCollection(1).Trendlines(1) '1ere eq
.DisplayRSquared = False
.DisplayEquation = True
Equation = Split(.DataLabel.Text)
End With

Range("E20").Value = Left(Equation(2), Len(Equation(2)) - 1)
Range("G20").Value = Equation(3) & Equation(4)

MsgBox "Pente = " & Left(Equation(2), Len(Equation(2)) - 1) _
& vbCrLf & vbCrLf & "Ordonnée à l'origine = " & Equation(3) & Equation(4)

With Feuil1.ChartObjects(1).Chart.SeriesCollection(2).Trendlines(1) '2e eq
.DisplayRSquared = False
.DisplayEquation = True
Equation = Split(.DataLabel.Text)
End With

Range("E21").Value = Left(Equation(2), Len(Equation(2)) - 1)
Range("G21").Value = Equation(3) & Equation(4)

End Sub


Merci de l'aide que vous pourrez m'apporter.
Bonne journée

Chips

4 réponses

Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
15 avril 2016 à 10:58
Bonjour,

Modifies le format de cellule tout simplement.
0
Bonjour Pierre, et merci de ta réponse

J'ai essayé mais ça ne fonctionne pas, le soucis c'est que plutôt que de récupérer 48.777 par exemple je me retrouve avec 48777, si je change le format il m'affiche 48777.000 et il est pris en compte comme ça dans les calculs suivant ce qui change considérablement mes résultats
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
15 avril 2016 à 11:41
Dim Equation

C'est pas bon, il faut que tu fasse
Dim Equation as double
0
Si je change ça il me met :

Erreur de compilation :
Tableau attendu

Et ça ne se lance plus du tout
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
Modifié par Pierre1310 le 15/04/2016 à 12:08
Tu te sers de combien de cellule de tableau?
J'en vois 4 donc
Dim Equation(4) as double


Oublie pas que tu peux te servir du 0
0
Chips > Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020
15 avril 2016 à 12:07
C'est à dire ? Pour afficher ?
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
15 avril 2016 à 12:08
Dans ton code tu utilise Equation(1) à Equation(4)
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
Modifié par eriiic le 15/04/2016 à 12:47
Bonjour,

pourquoi t'embêter à récupérer l'équation sur le graphique ?
Tu as DROITEREG() pour ça.
Application.LinEst() en VBA mais si le but est de mettre m et b dans une cellule pas besoin de vba.
ou bien PENTE() et ORDONNEE.ORIGINE() si tu préfères à une matrice (m,b).
Et si le but est d'interpoler tu as Tendance() ou Application.Trend() pour l'avoir directement.
eric

edit: remplacé COEFFICIENT.CORRELATION par ORDONNEE.ORIGINE

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
Merci de ta réponse
Mais il ne faut pas des points précis de la droite pour utiliser ces fonctions ?

Et pour le VBA mon programme fonctionne presque, même si au final il n'est pas si utile j'aimerais trouver ce qui cloche je n'aime pas abandonner des projets sans savoir pourquoi ça ne marche pas
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
15 avril 2016 à 13:02
Ben il faut utiliser ton tableau de points qui t'ont servi à tracer ta courbe.
Regarde l'aide excel sur ces fonctions, elle est très bien faite.

Et quand tu mets :
Range("E21").Value = Left(Equation(2), Len(Equation(2)) - 1)

C'est une chaine, pas un numérique. Qui en plus ne prend pas en compte ton séparateur décimal selon le cas.
Essaie avec :
CDbl(Range("E21").Value = Left(Equation(2), Len(Equation(2)) - 1))

Sinon sans fichier...
0
Chiiiiips Messages postés 11 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 15 avril 2016
15 avril 2016 à 14:42
ça ne marche pas non plus tant pis merci des conseils

On ne peut pas mettre de fichier sur ce forum si ?
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
15 avril 2016 à 14:43
Vas sur le site cijoint.com et colle le lien.
0
Chiiiiips Messages postés 11 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 15 avril 2016
15 avril 2016 à 14:52
Merci, voilà le fichier
https://www.cjoint.com/c/FDpmZicWj2g
0
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié par ccm81 le 15/04/2016 à 15:35
Bonjour à tous

Pour récupérer l'équation de la droite de régression (données source en A2:B12) via vba en A15:B15, tu peux faire plus simple

Dim f As String, plage As String, m As Double, b As Double
plage = "B2:B12,A2:A12"
f = "=LINEST(" & plage & ")"
' met pente et ordonnée à l'origine en A15 et B15
Range("A15:B15").FormulaArray = f
' récupère la pente et l'ordonnée à l'origine (pas utile bien sûr
m = Range("A15").Value
b = Range("B15").Value

Cdlmn
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
15 avril 2016 à 15:57
Pourquoi faire simple quand on peut faire compliqué ? ;-)
Déjà rejeté : https://forums.commentcamarche.net/forum/affich-33405133-vba-virgule-manquante-dans-m-et-b-l-equation-de-droite#9
0
Chiiiiips Messages postés 11 Date d'inscription vendredi 15 avril 2016 Statut Membre Dernière intervention 15 avril 2016
15 avril 2016 à 16:01
Mais c'est gentil du conseil, j'essayerais cette méthode la prochaine fois c'est vrai qu'elle à l'air bien plus rapide :)
0