Bonjour,

J'ai un tableau (Tableau) contenant des numéros (i) et des montants devant chacun de ces numéros (j).
J'ai ainsi : Tableau(i)=j

L'idée est de récupérer les numéros qui sont associés aux k-ièmes plus grandes valeurs.

Pour récupérer le montant, je n'aurais eu qu'à faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Application.WorksheetFunction.Large(Tableau,k)
Cependant, je veux ici récupérer non j, mais i (il peut en plus y avoir plusieurs i...)
Il me faudrait ainsi modifier légèrement le code initial de la fonction Large. Et pour cela, j'aurais besoin du code initial de la fonction Large.

Quelqu'un saurait-il m'aider ? (une autre idée serait également bienvenue!)



Pour l'instant, j'ai testé ceci (mais ça ne marche pas vraiment...)
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
 
Public Tableau(5) As Integer
Public TableauTempo(5) As Integer
Public TableauN°Max(5) As Integer
Public Succès As Boolean
Public k As Integer
 
 
Sub récupérerN°MaxAdapté()
 
Tableau(1) = 1
Tableau(2) = 10
Tableau(3) = 5
Tableau(4) = 4
Tableau(5) = 10
 
For i = 1 To 5
    TableauTempo(i) = Tableau(i)
Next i
 
'on récupère d'abord le Max le plus grand, puis le second...
k = 0
Do
    'On récupère le plus grand Max parmi ceux non encore testés (stockés dans le Tableau "TableauSecond"
    Call récupérerN°Max
    'On le teste
    Call condition(k)
    'On explique que celui-ci a été testé
    For N° = k To 4
        TableauTempo() = Tableau(N° + 1)
    Next N°
    k = k + 1
    'si le test est un succès, plus besoin de passer au suivant
Loop While Succès <> True
 
For i = 1 To k
    MsgBox TableauN°Max(i)
Next i
 
 
 
End Sub
 
 
 
 
Sub récupérerN°Max()
'on récupère le Max
For N° = 1 To 5
    If TableauTempo() > Max Then
        Max = TableauTempo()
    End If
Next N°
 
'On récupère tous les numéros qui sont associés à ce Max
For N° = 1 To 5
    If TableauTempo() = Max Then
        j = j + 1
        TableauN°Max(j) = N°
    End If
Next N°
 
End Sub
 
 
Function condition(k)
If Rnd > 0.75 Then
    Succès = True
End If
 
End Function
Merci !