| 12
 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
 
 |  
Sub test()
 
    Dim Tbl(1 To 10) As Double
    Dim TblRetour() As Double
    Dim I As Integer
 
    Tbl(1) = 1
    Tbl(2) = 10
    Tbl(3) = 5
    Tbl(4) = 25
    Tbl(5) = 10
    Tbl(6) = 1
    Tbl(7) = 36
    Tbl(8) = 5
    Tbl(9) = 25
    Tbl(10) = 10
 
    TblRetour = Max(Tbl(), 2)
 
    For I = 1 To UBound(TblRetour, 2)
 
        Debug.Print "Valeur : " & TblRetour(1, I) & " Index : " & TblRetour(2, I)
 
    Next I
 
End Sub
 
Function Max(Tablo() As Double, Nb As Integer) As Double()
 
    Dim Tbl() As Double
    Dim TblRetour() As Double
    Dim Valeur As Double
    Dim Index As Long
    Dim I As Long
    Dim J As Long
 
    'crée un tableau à 2 dimensions pour stocker les index
    ReDim Tbl(1 To 2, 1 To UBound(Tablo))
 
    'tranfère les valeurs et mémorise les index
    For I = 1 To UBound(Tablo)
 
        Tbl(1, I) = Tablo(I)
        Tbl(2, I) = I
 
    Next I
 
    '"<" pour les plus grandes valeur  et ">" pour les plus petites valeurs
    For I = 1 To UBound(Tbl, 2) - 1
 
        For J = I + 1 To UBound(Tbl, 2)
 
            If Tbl(1, I) < Tbl(1, J) Then
 
                Valeur = Tbl(1, J)
                Index = Tbl(2, J)
                Tbl(1, J) = Tbl(1, I)
                Tbl(2, J) = Tbl(2, I)
                Tbl(1, I) = Valeur
                Tbl(2, I) = Index
 
            End If
 
        Next J
 
    Next I
 
    J = 0
 
    'récupère la valeur de référence
    Valeur = Tbl(1, Nb)
 
    'boucle pour toutes les trouver et les stocke dans un autre tableau intermédiaire
    For I = 1 To UBound(Tbl, 2)
 
        If Tbl(1, I) = Valeur Then
 
            J = J + 1
 
            ReDim Preserve TblRetour(1 To 2, 1 To J)
            TblRetour(1, J) = Tbl(1, I)
            TblRetour(2, J) = Tbl(2, I)
 
        End If
 
    Next I
 
    Max = TblRetour
 
End Function |