Bonjour le Forum !
Je suis actuellement en train de créer un programme VBA afin de traiter des fichiers avec certaines données ! Jusque là ca va ^^
Une fois les données récupérées de plusieurs fichiers, je dois corréler ces données avec d'autres que l'utilisateur aura entré manuellement dans un userform.
Pour ces corrélations, il me faut créer la courbe puis des courbes de tendance.
- 1 régression linéaire
- 4 régressions polynomiales
Le facteur R² des ces régressions m'aide à décider laquelle je dois garder (de régression).
J'espère que c'est assez clair !! Si non hésiter pas à me demander.
J'ai quelques soucis (sinon je ne serais certainement pas là à réclamer votre aide) :
1) l'exécution automatique du programme (donc non pas à pas) ne me donne pas les valeurs que pourtant j'arrive à avoir en pas à pas !
2) j'aimerais connaitre l'indice d'un tableau que j'ai créé correspondant à la plus grande valeur de ce tableau.
J'aurais bien utiliser application.max(montab) mais ca me renvoie 0.
3) J'ai une erreur d'exécution à ce niveau là de mon programme
Je vous colle la partie de mon programme qui me pose soucis, si vous etes motivés pour m'aider je ne dis pas non à un peu d'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 For ordre = 1 To 5 If ordre <> meilleur Then ActiveChart.SeriesCollection(1).Trendlines(ordre).Select Selection.Delete End If Next
Merci d'avance,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 Sub recap() Dim montab(5) As Variant rang3 = Worksheets("DonnéesCorrélations").UsedRange.Rows.Count ' Supprimer anciens graphs ' For Each Legraphe In ActiveSheet.ChartObjects Legraphe.Delete Next ' Boucle afin de faire TOUT les graph For k = 1 To 2 i = 1 li = 2 col = 1 For l = 1 To 4 For m = 1 To 5 ' Ajouter nouveau graph ' ActiveSheet.Shapes.AddChart.Select ' Supprimer séries déjà affichées ' Do Until ActiveChart.SeriesCollection.Count = 0 ActiveChart.SeriesCollection(1).Delete Loop ' Choix type de courbe ' ActiveChart.ChartType = xlXYScatterLines ' Choix et ajout des séries ' ActiveChart.SeriesCollection.NewSeries ActiveChart.HasTitle = True abscisse k, l ordonnée m ' Facteur de corrélation ' ' on fait toutes les régressions ' For ordre = 1 To 5 If ordre = 1 Then ActiveChart.SeriesCollection(1).Trendlines.Add ActiveChart.SeriesCollection(1).Trendlines(ordre).Select Selection.DisplayRSquared = True rdeux = Right(ActiveChart.SeriesCollection(1).Trendlines("" & ordre).DataLabel.Text, 6) montab(ordre) = rdeux Else ActiveChart.SeriesCollection(1).Trendlines.Add ActiveChart.SeriesCollection(1).Trendlines("" & ordre).Select With Selection .Type = xlPolynomial .Order = ordre End With Selection.DisplayRSquared = True rdeux = Right(ActiveChart.SeriesCollection(1).Trendlines("" & ordre).DataLabel.Text, 6) montab(ordre) = rdeux End If MsgBox montab(ordre) Next ' on ne prend en compte qu'une régression ' MsgBox Application.Max(montab()) ' NE MARCHE PAS 'ordre = 5 'While ordre > 1 ' If montab(ordre) < montab(ordre - 1) Then ' meilleur = ordre - 1 ' ElseIf montab(ordre) = montab(ordre - 1) Then ' meilleur = ordre - 1 ' ElseIf montab(ordre) > montab(ordre - 1) Then ' meilleur = ordre ' End If ' ordre = ordre - 1 'MsgBox meilleur 'Wend For ordre = 1 To 5 If ordre <> meilleur Then ActiveChart.SeriesCollection(1).Trendlines(ordre).Select Selection.Delete End If Next 'Range("F" & li + 4).Value = ' Mise en place des graphiques ' If k = 1 Then With Worksheets("Récapitulatif") .ChartObjects(i).Top = .Rows(li).Top .ChartObjects(i).Left = .Columns(col).Left .ChartObjects(i).Height = 165.75 .ChartObjects(i).Width = 300 End With Else With Worksheets("Récapitulatif1") .ChartObjects(i).Top = .Rows(li).Top .ChartObjects(i).Left = .Columns(col).Left .ChartObjects(i).Height = 165.75 .ChartObjects(i).Width = 300 End With End If i = i + 1 li = li + 13 Next Next Worksheets("Récapitulatif1").Select Next End Sub Private Sub abscisse(k, l) If k = 1 Then If l = 1 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$F$1:$F$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$F$4:$F" & rang3 ElseIf l = 2 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$G$1:$G$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$G$4:$G" & rang3 ElseIf l = 3 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$H$1:$H$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$H$4:$H" & rang3 ElseIf l = 4 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$I$1:$I$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$I$4:$I" & rang3 End If ElseIf k = 2 Then If l = 1 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$J$1:$J$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$J$4:$J" & rang3 ElseIf l = 2 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$K$1:$K$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$K$4:$K" & rang3 ElseIf l = 3 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$L$1:$L$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$L$4:$L" & rang3 ElseIf l = 4 Then ActiveChart.SeriesCollection(1).Name = "='DonnéesCorrélations'!$M$1:$M$2" ActiveChart.SeriesCollection(1).Values = "='DonnéesCorrélations'!$M$4:$M" & rang3 End If End If End Sub
TotalJim
Partager