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

  • Initiateur de la discussion Initiateur de la discussion angelspeed
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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(P8😛240);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

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

Bonjour angelspeed.


Votre formule ne fonctionne pas lorsque Num(P8😛240) 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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour