VBA - Virgule manquante dans m et b l'équation de droite
Chips
-
Pierre1310 Messages postés 8854 Statut Membre -
Pierre1310 Messages postés 8854 Statut Membre -
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 :
Merci de l'aide que vous pourrez m'apporter.
Bonne journée
Chips
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
Résumé de la discussion
Un utilisateur cherche à récupérer les valeurs m et b des équations de courbes linéaires sur Excel via VBA (y = mx + b), mais les virgules décimales disparaissent lorsqu'elles sont copiées dans les cellules. Parmi les solutions évoquées, certains recommandent Replace pour retirer le symbole x ou ajuster le texte de l'équation afin d'extraire le coefficient, tandis que d'autres insistent sur le formatage des cellules et le séparateur décimal. En cas de persistance, vérifier le format numérique et le séparateur décimal dans les paramètres régionaux d'Excel ou du système peut être nécessaire, car la syntaxe peut utiliser soit le point soit la virgule.
-
Bonjour,
Modifies le format de cellule tout simplement.
-
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 -
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-
-
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... -
-
-
Merci, voilà le fichier
https://www.cjoint.com/c/FDpmZicWj2g
-
-
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-
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 -
-