Bonjour à tous,
J'ai un problème avec un tableau en VBA. La solution ne doit pas être complexe mais je ne trouve pas
Voilà, j'ai une fonction VBA que j'ai nommée Lagfind. Elle procède à des calculs dans une boucle en utilisant deux autres fonctions. (Akaike et Schwarz information criterions). Elle range les résultâts dans un tableau à trois dimensions ("temp"):
-la première colonne correspond au délai ("Lag")
-la seconde aux critères AIC pour ce délai
-la troisième aux critères SIC pour le délai
Je voudrai que si le minimum du AIC est atteint en Lag 3, elle m'indique 3. Et de même pour le minimum du SIC. Cependant je n'arrive pas déjà à trouver le minimum dans les colonnes de mon tableau.
En effet, j'ai cru comprendre qu'il ne sélectionne pas toutes les valeurs de la colonne 2 qui contient 15 nombres. Aussi, l'instruction Array n'est pas la bonne. L'instruction Range non plus
Any ideas?
J'oubliais, les valeurs de mon tableau Temp sont comme cela:
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 Function LagFind(Y As Range, X As Range) ' Find the number of Lag using AIC and SIC information criterion Dim K, i As Integer, temp As Variant K = 15 ReDim temp(K, 3) As Variant ' For i = 1 To K temp(i, 1) = i temp(i, 2) = AIC(Y, X, i) temp(i, 3) = SIC(Y, X, i) Next i ' 'Find the Lag minimizing AIC and SIC Dim MinAic, MinSic, LagAic, LagSic MinAic = WorksheetFunction.min(range(temp(1, 2), temp(K, 2))) LagAic = Application.VLookup(MinAic, temp, 1, False) MinSic = WorksheetFunction.min(Array(temp(1, 3), temp(K, 3))) LagSic = Application.VLookup(MinAic, temp, 1, False) End Function
Merci pour votre 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 1 1,47533494 6,754085829 2 1,451687717 6,812431611 3 1,450860791 6,86650828 4 1,453698856 6,915370452 5 1,458011428 6,966012272 6 1,460715742 7,013070449 7 1,465700744 7,053706042 8 1,470644021 7,092846743 9 1,472862906 7,130334578 10 1,474822532 7,166463082 11 1,478294861 7,196580962 12 1,489471525 7,228630139 13 1,493153789 7,25874535 14 1,494039948 7,285451228 15 1,497900179 7,311176162
Cordialement
Anthony
Partager