Bonjour,
Je débute dans les macro vba et viens de passer un certain temps à essayer de debugger mon code. J'espère que quelqu'un sur le forum pourra m'aider.
J'ai un fichier avec 19 variables (18 expliquées et 1 explicative). Je dois donc réaliser 18 régressions linéaires sur la base de ces données. Sachant que mes 19 séries "accueillent" une nouvelle donnée tous les mois ce qui fait que la longueur de ma série n'est pas fixe.
J'ai dans un premier temps, écris à l'aide de l'enregistreur de macro le code ci-dessous qui effectue les 18 régressions dont j'ai besoin (code non optimal je sais bien). Et celui-ci marche bien:
Ensuite j'ai essayé de prendre en compte le fait que mes séries sont évolutives avec le code ci-dessous et là je reçois 2 sortes de messages d'erreur :
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 ActiveWorkbook.Sheets("Reg_taux_longs").Cells.Select Selection.ClearContents Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone ' Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$C$5:$C$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$1:$I$18"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B1").Select ActiveCell.FormulaR1C1 = "=Données!R[3]C[1]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$D$5:$D$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$20:$I$38"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B20").Select ActiveCell.FormulaR1C1 = "=Données!R[-16]C[2]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$E$5:$E$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$40:$I$58"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B40").Select ActiveCell.FormulaR1C1 = "=Données!R[-36]C[3]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$F$5:$F$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$60:$I$78"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B60").Select ActiveCell.FormulaR1C1 = "=Données!R[-56]C[4]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$G$5:$G$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$80:$I$98"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B80").Select ActiveCell.FormulaR1C1 = "=Données!R[-76]C[5]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$H$5:$H$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$100:$I$118"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B100").Select ActiveCell.FormulaR1C1 = "=Données!R[-96]C[6]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$I$5:$I$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$120:$I$138"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B120").Select ActiveCell.FormulaR1C1 = "=Données!R[-116]C[7]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$J$5:$J$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$140:$I$158"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B140").Select ActiveCell.FormulaR1C1 = "=Données!R[-136]C[8]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$K$5:$K$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$160:$I$178"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B160").Select ActiveCell.FormulaR1C1 = "=Données!R[-156]C[9]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$L$5:$L$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$180:$I$198"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B180").Select ActiveCell.FormulaR1C1 = "=Données!R[-176]C[10]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$M$5:$M$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$200:$I$218"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B200").Select ActiveCell.FormulaR1C1 = "=Données!R[-196]C[11]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$N$65:$N$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$220:$I$238"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B220").Select ActiveCell.FormulaR1C1 = "=Données!R[-216]C[12]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$O$65:$O$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$240:$I$258"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B240").Select ActiveCell.FormulaR1C1 = "=Données!R[-236]C[13]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$P$173:$P$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$173:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$260:$I$278"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B260").Select ActiveCell.FormulaR1C1 = "=Données!R[-256]C[14]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$Q$65:$Q$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$280:$I$298"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B280").Select ActiveCell.FormulaR1C1 = "=Données!R[-276]C[15]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$R$5:$R$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$300:$I$318"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B300").Select ActiveCell.FormulaR1C1 = "=Données!R[-296]C[16]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$S$5:$S$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$320:$I$338"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B320").Select ActiveCell.FormulaR1C1 = "=Données!R[-316]C[17]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$T$65:$T$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$340:$I$358"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B340").Select ActiveCell.FormulaR1C1 = "=Données!R[-336]C[18]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$U$5:$U$382"), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$382"), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$360:$I$378"), False, False, False, False, , False Sheets("Reg_taux_longs").Range("B360").Select ActiveCell.FormulaR1C1 = "=Données!R[-356]C[19]" End Sub
"La plage d'entrée ne peut contenir des données non numériques"
" Les plages d'entrées pour les variables X et pour la variable Y doivent avoir le même nombre de ligne, sans y compter l'intitulé"
A noter que quand je lance les blocs de code un à un, ils fonctionnent tous. C'est ensemble qu'ils dysfonctionnent.
Quelqu'un saurait-il pourquoi et ce que je peux y faire?
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 ActiveWorkbook.Sheets("Reg_taux_longs").Cells.Select Selection.ClearContents Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$C$5:$C$" & Range("C" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$1:$I$18"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B1").Select ActiveCell.FormulaR1C1 = "=Données!R[3]C[1]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$D$5:$D$" & Range("D" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$20:$I$38"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B20").Select ActiveCell.FormulaR1C1 = "=Données!R[-16]C[2]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$E$5:$E$" & Range("E" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$40:$I$58"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B40").Select ActiveCell.FormulaR1C1 = "=Données!R[-36]C[3]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$F$5:$F$" & Range("F" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$60:$I$78"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B60").Select ActiveCell.FormulaR1C1 = "=Données!R[-56]C[4]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$G$5:$G$" & Range("G" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$80:$I$98"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B80").Select ActiveCell.FormulaR1C1 = "=Données!R[-76]C[5]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$H$5:$H$" & Range("H" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$100:$I$118"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B100").Select ActiveCell.FormulaR1C1 = "=Données!R[-96]C[6]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$I$5:$I$" & Range("I" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$120:$I$138"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B120").Select ActiveCell.FormulaR1C1 = "=Données!R[-116]C[7]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$J$5:$J$" & Range("J" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$140:$I$158"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B140").Select ActiveCell.FormulaR1C1 = "=Données!R[-136]C[8]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$K$5:$K$" & Range("K" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$160:$I$178"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B160").Select ActiveCell.FormulaR1C1 = "=Données!R[-156]C[9]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$L$5:$L$" & Range("L" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$180:$I$198"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B180").Select ActiveCell.FormulaR1C1 = "=Données!R[-176]C[10]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$M$5:$M$" & Range("M" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$200:$I$218"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B200").Select ActiveCell.FormulaR1C1 = "=Données!R[-196]C[11]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$N$65:$N$" & Range("N" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$220:$I$238"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B220").Select ActiveCell.FormulaR1C1 = "=Données!R[-216]C[12]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$O$65:$O$" & Range("O" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$240:$I$258"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B240").Select ActiveCell.FormulaR1C1 = "=Données!R[-236]C[13]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$P$173:$P$" & Range("P" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$173:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$260:$I$278"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B260").Select ActiveCell.FormulaR1C1 = "=Données!R[-256]C[14]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$Q$65:$Q$" & Range("Q" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$280:$I$298"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B280").Select ActiveCell.FormulaR1C1 = "=Données!R[-276]C[15]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$R$5:$R$" & Range("R" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$300:$I$318"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B300").Select ActiveCell.FormulaR1C1 = "=Données!R[-296]C[16]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$S$5:$S$" & Range("S" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$320:$I$338"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B320").Select ActiveCell.FormulaR1C1 = "=Données!R[-316]C[17]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$T$65:$T$" & Range("T" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$65:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$340:$I$358"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B340").Select ActiveCell.FormulaR1C1 = "=Données!R[-336]C[18]" Application.Run "ATPVBAEN.XLAM!Regress", ActiveWorkbook.Sheets("Données").Range("$U$5:$U$" & Range("U" & Rows.Count).End(xlUp).Row), _ ActiveWorkbook.Sheets("Données").Range("$B$5:$B$" & Range("B" & Rows.Count).End(xlUp).Row), False, False, , ActiveWorkbook.Sheets("Reg_taux_longs").Range("$A$360:$I$378"), _ False, False, False, False, , False Sheets("Reg_taux_longs").Range("B360").Select ActiveCell.FormulaR1C1 = "=Données!R[-356]C[19]" End Sub
Les propositions d'optimisation de mon code sont également les bienvenues!
Merci d'avance!
Perf. relative secteurs v2.xlsm
Partager