VBA - Extraire des informations d'un tableau pour créer un top de valeurs

Bonjour à tous,

J'ai un tableau à deux colonnes (nommé tAnnuaire) contenant d'une part des actionnaires et d'autre part, la quantité d'actions dont ils disposent. Je cherche à créer un Top N où N est un entier qui est entré par l'utilisateur dans une cellule prédéfinie. J'ai réussi à créer la structure du tableau (ie à mettre à jour le nom "Top N" en fonction de N et à créer une colonne avec 1 2 3 4...N) et j'aimerais utiliser les fonctions GRANDEVALEUR, INDEX et EQUIV pour remplir le tableau avec mes valeurs. Seulement je n'arrive pas à récupérer les infos de mon tableau. Idéalement je voudrais aussi que ma macro se mette à jour dés que l'on change n. Auriez-vous une idée de comment faire?

Merci d'avance à tous les membres du forum qui m'aide à progresser!

Sub TopX()
 Dim i As Integer
 Dim n As Integer
 Dim ListObj As ListObject
 Set ListObj = Sheets("Annuaire Investisseurs").ListObjects("tAnnuaire")
 i = 0
 n = Range("F3").Value
 Sheets("Annuaire Investisseurs").Range("K2:M1000").Clear
 For i = 1 To n
  Range("K" & i + 2) = i
  Range("M" & i + 2) = WorksheetFunction.Large(ListObj.ListColumns("Actions"), i)
 Range("L" & i + 2) = Index(ListObj.ListColumns("Investisseurs"), EQUIV(Range("M" & i + 2).Value, ListObj.ListColumns("Actions"), 0))

 Next

 Range("K2") = "TOP " & n

End Sub

bonjour, quelle est votre version ? Pour excel 365-2021. On peut le faire aussi avec de formules

Sub test()
     'seulement Excel >=2021-365
     Dim aA, aB
     aA = Range("K2").ListObject.DataBodyRange.Value     'contenu du tableau
     aB = Application.Sort(aA, 3, -1)     'sorter 3ième colonne descendant
     Range("S2").Resize(Application.Min(UBound(aA), Range("F3").Value), UBound(aA, 2)).Value = aB
End Sub
Rechercher des sujets similaires à "vba extraire informations tableau creer top valeurs"