DROITEREG en VBA (sans passer par Excel)

willce

XLDnaute Nouveau
Bonjour,

Voilà ma problématique: je possède un nuage de points et cherche à déterminer la droite de régression linéaire correspondante.

Les valeurs de ces points sont déterminées via un code VBA et n'apparaissent pas dans un tableau Excel (et je ne tiens pas à les faire apparaitre dans Excel: il s'agit de données temporaires)

Or:
1. je n'ai, au final, besoin de récupérer que la pente (a) et l'ordonnée à l'origine (b) de la droite de regression et
2. comme je l'ai précisé, je ne veux pas passer par l'intermédiaire d'une feuille EXCEL

Idéalement: il me faudrait une fonction VBA (mais pas LINEST qui nécessite "d'écrire" dans Excel) qui me génére les 2 coefficients au sein de ma procédure VBA.

Euh...j'ai été clair ?! :confused:
Merci pour vos suggestions
 

job75

XLDnaute Barbatruc
Re : DROITEREG en VBA (sans passer par Excel)

Bonjour willce, JNP,

Un exemple au plus simple :

Code:
Sub Regression()
Dim X(3), Y(3), a As Double, b As Double
X(0) = 0: Y(0) = 1
X(1) = 1: Y(1) = 3
X(2) = 2: Y(2) = 5
X(3) = 3: Y(3) = 7
a = Application.Index(Application.LinEst(Y, X), 1)
b = Application.Index(Application.LinEst(Y, X), 2)
MsgBox "Pente a = " & a & Chr(10) & "Ordonnée à l'origine b = " & b
End Sub

Edit : pas besoin de la fonction Index :

Code:
Sub Regression()
Dim X(3), Y(3), a As Double, b As Double
X(0) = 0: Y(0) = 1
X(1) = 1: Y(1) = 3
X(2) = 2: Y(2) = 5
X(3) = 3: Y(3) = 7
a = Application.LinEst(Y, X)[COLOR="Red"](1)[/COLOR]
b = Application.LinEst(Y, X)[COLOR="red"](2)[/COLOR]
MsgBox "Pente a = " & a & Chr(10) & "Ordonnée à l'origine b = " & b
End Sub

A+
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : DROITEREG en VBA (sans passer par Excel)

Re :),
Job : J'allais te poser la question si tu utilisais Index pour ne pas tenir compte de Option Base 0 ou 1 :p... L'hypothèse est intérressante, non :D ?
Bonne soirée :cool:
 

job75

XLDnaute Barbatruc
Re : DROITEREG en VBA (sans passer par Excel)

Re Jean-Noël,

J'utilisais Index parce que je l'utilise dans une feuille de calcul.

Mais j'ai corrigé car elle est inutile en VBA sur une matrice.

Intéressant de noter aussi que Application.LinEst(Y, X)(0) n'existe pas...

A+
 
Dernière édition:

willce

XLDnaute Nouveau
[RESOLU] DROITEREG en VBA (sans passer par Excel)

Bonjour willce, JNP,

Un exemple au plus simple :

Code:
Sub Regression()
Dim X(3), Y(3), a As Double, b As Double
X(0) = 0: Y(0) = 1
X(1) = 1: Y(1) = 3
X(2) = 2: Y(2) = 5
X(3) = 3: Y(3) = 7
a = Application.Index(Application.LinEst(Y, X), 1)
b = Application.Index(Application.LinEst(Y, X), 2)
MsgBox "Pente a = " & a & Chr(10) & "Ordonnée à l'origine b = " & b
End Sub

Edit : pas besoin de la fonction Index :

Code:
Sub Regression()
Dim X(3), Y(3), a As Double, b As Double
X(0) = 0: Y(0) = 1
X(1) = 1: Y(1) = 3
X(2) = 2: Y(2) = 5
X(3) = 3: Y(3) = 7
a = Application.LinEst(Y, X)[COLOR="Red"](1)[/COLOR]
b = Application.LinEst(Y, X)[COLOR="red"](2)[/COLOR]
MsgBox "Pente a = " & a & Chr(10) & "Ordonnée à l'origine b = " & b
End Sub

A+

Terrible JOB 75, c'est exactement ce que je veux ! :):)
Merci également JPN qui a tracé la voie !!

Willce
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 588
Membres
111 208
dernier inscrit
estalavista