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
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
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
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
Merci d'avance,

TotalJim