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.

  • 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 !

A

angelspeed

Guest
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…