Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 VBA - Droite de régression, récupérer coef.

angelspeed

XLDnaute Junior
Bonjour,

je réalise actuellement un synthèse de données sur plusieurs années. Pour se faire, en version simplifié, j'utilise un TCD et un 2ème tableau lié à celui-ci puisque je dois faire apparaitre les écarts à la moyenne sur le graphique.

Pour se faire, j'ai besoin des coefficient a et b de la droite de régression linéaire. Dans l'absolu j'utilise une formule matricielle de type =DROITEREG(Num(P8240);Num(L8:L240)^{1})

Le problème c'est quand je ne veux pas sélectionner toutes les années, j'ai donc des cellules avec des N/A, et la formule ne marche plus... D'autant plus que j'ai une fonction pour le graphique afin de ne pas tenir comte des cellules vides.

Donc j'ai pensé à utiliser VB pour calculer directement à partir de la courbe, sauf que ça ne marche pas : étrangement si la courbe est déjà présente, ça m'affiche bien l'équation dans ma MsgBox, mais si je l'efface, j'ai plus rien.

Je vous mets le fichier exemple. Dans celui-ci, la droite de régression est présente, donc le script marche (lancer la macro), mais il suffit de la supprimer pour que rien ne fonctionne...
Une année n'a pas été sélectionnée dans le TCD

Merci de votre aide.
 

Pièces jointes

  • Test_regression.xlsm
    262 KB · Affichages: 28

ROGER2327

XLDnaute Barbatruc
Re : VBA - Droite de régression, récupérer coef.

Bonjour angelspeed.


Votre formule ne fonctionne pas lorsque Num(P8240) et Num(L8:L240) n'ont pas la même taille.

Je suggère :​
Code:
=DROITEREG(Num_2(P8:P240;L8:L240);Num_2(L8:L240;P8:P240))
avec​
Code:
Function Num_2(matA As Range, matB As Range)
Dim i&, n&, a(), b(), v#()
  a = matA.Value2: b = matB.Value2
  ReDim v(1 To UBound(b))
  For i = 1 To UBound(b)
    If IsNumeric(a(i, 1)) And CStr(a(i, 1)) <> "" Then
      If IsNumeric(b(i, 1)) And CStr(b(i, 1)) <> "" Then n = n + 1: v(n) = a(i, 1)
    End If
  Next
  ReDim Preserve v(1 To n): Num_2 = v
End Function


Bonne journée.


ℝOGER2327
#8275


Mercredi 4 Gidouille 143 (Sainte Tripe, républicaine - fête Suprême Quarte)
30 Prairial An CCXXIV, 0,6071h - chariot
2016-W24-6T01:27:26Z
 

Discussions similaires

Réponses
27
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…