Macro, calcul regression poly 2 avec plage de valeur changeante

Bonjour à tous,

Dans le cadre de mon travail je cherche à calculer les coefficients d'une régression polynomiale d'ordre 2 d'une série de valeurs.

Mon problème est que le nombre de valeurs pour lesquelles je veux calculer ces coefficients est amené à changer. Donc je ne peux pas écrire ceci:

Range("U11:W11").Select #emplacement où la matrice s'écrira

Range("W11").Activate

Selection.FormulaArray = _

"= LINEST(F1:F100,(A1:A100)^{1,2},TRUE)" #formule pour la matrice

Car une fois les plages de valeurs seront A1:A100/F1:F100 et une autre elles seront A1:A15/F1F15 par exemple.

J'ai pensé à mettre dans la formule LINEST ceci :

"=LINEST(colonneF,(colonneA)^{1,2},TRUE)"

où "colonneF" est un Nom, dont la taille s'adapterait, pareil pour "colonneA".

J'ai une formation basique en VBA mais là c'est trop pour moi...

Je ne peux malheureusement pas vous joindre mon fichier car il comprend des informations sensibles.

Merci pour votre aide !

simon21

Bonjour,

mettre un fichier exemple si tu ne peux pas donner ton fichier original est toujours possible.

pour ton problème.

recherche sur internet "nommer une plage dynamique excel", et définis ainsi colonneA et colonneF et ton code vba devrait fonctionner.

Merci pour la piste, je vais chercher ça.

En attendant voici un fichier exemple.

Merci beaucoup

bonjour à vous

que donne le Data Analysis Toolpack ?

Bonjour,

une proposition

Bonsoir,

Ca marche super bien mais je ne comprend pas le code, je vais regarder ça en détail...

J'ai réussi aussi mais sans macro, seulement avec des formules :

{=DROITEREG(colonneB;colonneA^{1.2};VRAI)}

Les noms sont dynamiques comme vous m'avez proposé.

Merci bien et bonne soirée !

Bonjour,

Une autre proposition à étudier.

Cdlt.

Option Explicit

Public Sub Calcul_regression()
Dim lRow As Long, lCol As Long, lastRow As Long
Dim rng As Range, rng2 As Range
Dim sFormula As String
Dim x
    With ActiveSheet
        lRow = 7
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(1).Resize(lastRow)
        For lCol = 2 To 10
            Set rng2 = .Cells(lCol).Resize(lastRow)
            sFormula = "=linest(" & rng2.Address & "," & rng.Address & "^{1,2})"
            x = Application.Evaluate(sFormula)
            .Cells(lRow, 21).Value = Application.Index(x, 1, 1)
            .Cells(lRow, 22).Value = Application.Index(x, 1, 2)
            .Cells(lRow, 23).Value = Application.Index(x, 1, 3)
            lRow = lRow + 1
        Next lCol
    End With
End Sub

Merci pour votre réponse. Je ne comprends pas mais ça fonctionne !

Bonsoir,

Ca marche super bien mais je ne comprend pas le code, je vais regarder ça en détail...

J'ai réussi aussi mais sans macro, seulement avec des formules :

{=DROITEREG(colonneB;colonneA^{1.2};VRAI)}

Les noms sont dynamiques comme vous m'avez proposé.

Merci bien et bonne soirée !

Bonjour,

la macro ne sert qu'à mettre les formules. Une fois celles-ci en place, la macro n'a plus de raison d'être.

Rechercher des sujets similaires à "macro calcul regression poly plage valeur changeante"