Courbe de tendance VBA

PNI

XLDnaute Nouveau
Bonjour,

Je suis débutant en VBA et j'ai quelques difficultés concernant les courbes de tendances.

Tout d'abord j'ai une feuille de calcul ou j'ai un tableau de données de 10lignes par 5 colonnes.

Sur un graphique incorporé, j'ai tracé 4 séries de valeurs correspondant aux valeurs des 4 dernières colonnes de mon tableau avec la première colonne correspondant à mes abscisses.
Pour résumé, ma première colonne correspond aux abscisses et les 4 autres sont des données ou chaque colonne correspond à une série.(Donc je peux alors tracer 4 courbe de tendance, 1 pour chaque série).

Je souhaiterais savoir comment je peux les tracer en utilisant du code VBA, puis obtenir l'équation( ou coefficient directeur ) de cette droite dans une cellule.

Je vous remercie de votre aide.

PNI
Je vous remercie
 

ROGER2327

XLDnaute Barbatruc
Re : Courbe de tendance VBA

Bonjour PNI, bienvenue.
Déposez le classeur sur le forum, ça nous évitera dans fabriquer un qui, c'est probable, ne correspondra à votre modèle. Nous y gagnerons tous notre temps...​
ROGER2327
#4401


Dimanche 22 Haha 138 (Résurrection de Bosse-de-Nage, SS)
6 Brumaire An CCXIX
2010-W43-3T16:15:07Z
 

CBernardT

XLDnaute Barbatruc
Re : Courbe de tendance VBA

Bonjour PNI,

Salut ROGER2327,


Sans fichier de référence, un exemple de mise en place de tendance linéaire par trois méthodes :

1- Méthode intuitive d'Excel :

- Sélectionner la plage des y ici la plage B2:B11 puis tirer vers le bas au moins le double des valeurs y existantes.
- Déplacer la série des valeurs obtenues une colonne à droite puis tirer vers le haut.

2 - Méthode par formule :

- Dans la plage D2:D11 écrire la formule suivante : = TENDANCE($B$2:$B$11;$A$2:$A$11). Cette formule est matricielle et doit être activée par Ctrl + Maj + Entrée.
Pour connaître les valeurs suivantes ici en D12 pour le 11 ème mois, écrire la formule suivante : =TENDANCE($B$2:$B$11;$A$2:$A$11;A12), formule non matricielle.

3- Méthode par VBA :

- Par VBA les résultats matriciels obtenus précédemment par formule sont obtenus par la macro lancée par le bouton TENDANCE LINEAIRE et les valeurs suivantes en fonction du nombre de mois souhaités en cellule M1 par le bouton TENDANCES SUIVANTES .

Ce ne sont que des possibilités à adapter à ton projet !
 

Pièces jointes

  • Tendance.xls
    31 KB · Affichages: 433
  • Tendance.xls
    31 KB · Affichages: 487
  • Tendance.xls
    31 KB · Affichages: 497

Chool

XLDnaute Nouveau
Re : Courbe de tendance VBA

Bonjour,
Je suis tout à fait débutante en VBA et je dois faire un programme pour les cours, le problème à l'air de ressembler à celui poser au dessus. J'espère que vous pourrez m'aider.

Le principe du programme est de récupérer une plage de donner d'une feuille de calcul et d'un faire un diagramme nuage de point. Jusque la je me débrouille, l'ennuis c'est quand j'essaie de tracer une courbe de tendance et d'afficher l'équation sur le graphique.
La courbe apparait quand elle veut et excel ne comprend pas mon instruction d'affichage d'équation.

Je vous donne un extrait ce que j'ai fait :


ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=objRange
Worksheets("Poutre console").ChartObjects(1).Chart.SeriesCollection(1).Trendlines.Add Type:=xlLinear

ActiveChart.HasTitle = True
ActiveChart.ChartTitle.Text = "Force appliqée en fonction du déplacement"

ActiveChart.SeriesCollection(1).Trendlines(1).DisplayEquation = True

ActiveChart.ApplyLayout (1)


Merci d'avance si vous avez des idées !
 

job75

XLDnaute Barbatruc
Re : Courbe de tendance VBA

Bonsoir Chool,

Je ne vous avais pas oubliée.

Comme je le disais ce n'est pas très compliqué, et voici une solution bien simple :

Code:
Sub CourbeTendance(serie As Object)
Dim tend
tend = MsgBox("Pour une tendance linéaire cliquez sur Oui" _
& Chr(10) & "Pour une tendance polynomiale cliquez sur Non", 4, "Courbe de tendance")
tend = IIf(tend = 6, xlLinear, xlPolynomial)
serie.Trendlines.Add Type:=tend, DisplayEquation:=1
End Sub
Cette petite macro est appelée par la macro principale ou par toute autre macro de votre projet.

Il vous reste un peu de travail pour que le graphe soit présentable.

Bonne nuit.

Edit : j'ajoute le classeur en .xls.

La macro principale a été un peu modifiée afin de fonctionner sous Excel 2003.
 

Pièces jointes

  • testcourbe(1).xlsm
    20.5 KB · Affichages: 148
  • testcourbe(1).xls
    41.5 KB · Affichages: 145
Dernière édition:

job75

XLDnaute Barbatruc
Re : Courbe de tendance VBA

Bonjour Chool, le forum,

Sur Excel 2003, il est plus logique d'utiliser cette version (2).

Bien sûr elle fonctionne aussi sur Excel 2007/2010.

A+
 

Pièces jointes

  • testcourbe(2).xls
    40 KB · Affichages: 178
Dernière édition:

job75

XLDnaute Barbatruc
Re : Courbe de tendance VBA

Bonjour Chool, le forum,

Pour peaufiner, on peut faire préciser l'ordre de la tendance polynomiale :

Code:
Sub CourbeTendance(serie As Object)
Dim tend As Byte, ordre As Variant
tend = MsgBox("Pour une tendance linéaire cliquez sur Oui" & Chr(10) & _
  "Pour une tendance polynomiale cliquez sur Non", 3, "Courbe de tendance")
If tend = 6 Then serie.Trendlines.Add Type:=xlLinear, DisplayEquation:=1
If tend = 7 Then
  ordre = Val(InputBox("Entrer un nombre entre 2 et 6 :", "Ordre du polynome de tendance"))
  If ordre < 2 Or ordre > 6 Then ordre = 2
  serie.Trendlines.Add Type:=xlPolynomial, Order:=ordre, DisplayEquation:=1
End If
End Sub
Avec la macro précédente l'ordre était 2 par défaut.

Edit : ordre défini As Variant pour éviter tout bug (nombre négatif...)

A+
 

Pièces jointes

  • testcourbe(3).xls
    42.5 KB · Affichages: 196
  • testcourbe(3).xlsm
    21.1 KB · Affichages: 120
Dernière édition:

Discussions similaires

Réponses
12
Affichages
330

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia