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?

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
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
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
Merci pour votre aide

Cordialement

Anthony