Régression polynomiale avec WorksheetFunction

Bonjour à tous,

J'aimerais écrire une fonction VBA qui me donnerai les coefficients polynomiaux d'une série de donnée.

Quand je rentre la formule dans Excel pas de soucis ça fonctionne

=DROITEREG(J5:J243;I5:I243^{1.2})

Mais quand je veux insérer dans VBA comme ceci:

Function POLYREG()

POLYREG = Application.WorksheetFunction.LinEst(Range("Filtre!J5:J243"), Range("Filtre!I5:I243") ^ {1.2})

End Function

ça fonctionne pas. Je pense que ceux sont les accolades qui ne passent pas puisse que quand je l'ai enlève ça marche mais du coup j'ai les coefficient d'une courbe linéaire ..

Function POLYREG()

POLYREG = Application.WorksheetFunction.LinEst(Range("Filtre!J5:J243"), Range("Filtre!I5:I243"))

End Function

Auriez vous une idée de comment je peux les intégrer dans mon code pour que ça fonctionne ?

Sinon j'avais pensé à utiliser Evaluate mais je la trouve trop lourd comme fonction.

Merci d'avance pour vos retours,

Bien cordialement,

bonjour,

tu peux adapter ta formule ainsi

POLYREG = Application.WorksheetFunction.LinEst(Range("Filtre!k5:k243"), Range("Filtre!I5:J243") )

Après avoir déplacé tes y des la colonne J en colonne K et mis en colonne J, les valeurs de la colonne I au carré.

Bonjour Acide Sulfurique,

A moins que je me trompe mais avec votre formule je n'aurai pas les 3 coefficients de ma polynomiale de seconde ordre, c'est à dire a,b,c de ax*x + b*x + C ?

Bien cordialement

Bonjour,

Pour le principe.

Cdlt.

Option Explicit

Public Sub Aurelien()
    Dim x As String, y As String
    Dim b As Double, x2 As Double, x1  As Double
    x = Range("A2:A10").Address
    y = Range("B2:B10").Address
    x2 = Evaluate("INDEX(LINEST(" & y & "," & x & "^{1,2}),1,1)")
    x1 = Evaluate("INDEX(LINEST(" & y & "," & x & "^{1,2}),1,2)")
    b = Evaluate("INDEX(LINEST(" & y & "," & x & "^{1,2}),1,3)")
    Debug.Print x2, x1, b
End Sub

bonsoir,

A moins que je me trompe mais avec votre formule je n'aurai pas les 3 coefficients de ma polynomiale de seconde ordre, c'est à dire a,b,c de ax*x + b*x + C ?

Bien cordialement

as-tu essayé ?

Bonjour h2so4,

Je n'avais pas bien compris ton 1er message et en effet cela fonctionne très bien.

Cependant je cherche une formule ou je n'aurais pas besoin de modifier mes colonnes d'entrées

J'ai finalement réussi de mon cotés en utilisation Evaluate :

Application.Evaluate("=LINEST(Filtre!J5:J" & L & ",Filtre!I5:I" & L & "^{1,2})")

je te remercie pour le temps que tu m'as consacré,

Cordialement,

Bonjour h2so4,

Je n'avais pas bien compris ton 1er message et en effet cela fonctionne très bien.

Cependant je cherche une formule ou je n'aurais pas besoin de modifier mes colonnes d'entrées

J'ai finalement réussi de mon cotés en utilisation Evaluate :

Application.Evaluate("=LINEST(J5:J15,I5:I15^{1,2})")

je te remercie pour le temps que tu m'as consacré,

Cordialement,

Bonjour Jean-Eric,

J'ai essayé ton programme mais je n'ai pas réussi à le faire fonctionné ...

Cela n'a pas beaucoup importance, car comme je l'ai dit à h2so4, j'ai trouvé une solution qui me convient avec Evaluate.

Merci de ton aide et de ton temps,

Cordialement,

bonjour,

une solution sans colonne supplémentaire et sans evaluate.

Ah yes merci c'est nickel !

Il y a t'il la possibilité d'un faire une fonction ?

Euh la fonction existe déjà non ? Je ne comprends pas la demande.

Je me suis mal exprimé en mode formule je voulais dire

Comme ça par exemple:

Function poly()

poly = .......

End Function

Rechercher des sujets similaires à "regression polynomiale worksheetfunction"