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 :
Cependant, je veux ici récupérer non j, mais i (il peut en plus y avoir plusieurs i...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.WorksheetFunction.Large(Tableau,k)
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...)
Merci !
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(N°) = 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(N°) > Max Then Max = TableauTempo(N°) 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(N°) = 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
Partager