VBA pour extraire le top 10 des plus grands

salutations ,

J'ai une feuille de calcul avec mille lignes et 30 colonnes, j'ai besoin d'extraire les 10 premiers plus grands résultats d'une variable donnée .

J'ai cherché sur le forum et trouvé un exemple presque comme mon problème dans ce sujet ici. J'ai joint la feuille de calcul pour le même sujet pour expliquer mon besoin.

dans la feuille4 est la base de données étendue de la colonne A à la colonne Q. dans la cellule jaune S1 est la variable qui doit être observée par la macro.

dans la colonne P sont les valeurs Total, j'ai donc besoin de la macro pour récupérer les 10 premières valeurs les plus élevées (10 lignes) des colonnes B, D, H, P (en rouge). selon la valeur la plus grandes de la colonne P.

sont ces données doivent être placées dans la feuille1 dans l'ordre décroissant. s'il y a des données répétées, elles doivent également être copiées, si la macro ne trouve pas 10 valeurs plus grandes de la colonne P, vous ne pouvez mettre que les données trouvées.

Je vous remercie pour votre aide.

37valeurs-max.xlsm (76.18 Ko)

bonjour,

une proposition

Sub trip()
    With Sheets("feuil4")
        Set tableau = .Range("A1").CurrentRegion
        tableauinitial = tableau 'copie avant le tri
        tableau.Sort key1:=.Range("p1"), order1:=xlDescending, Header:=xlYes 'tri
        Set ws1 = Sheets("feuil1")
        For i = 1 To 11'copie des colonnes des 11 premières lignes
            ws1.Cells(i, 1) = .Cells(i, "B")
            ws1.Cells(i, 2) = .Cells(i, "D")
            ws1.Cells(i, 3) = .Cells(i, "H")
            ws1.Cells(i, 4) = .Cells(i, "P")
        Next i
        .Range("A1").Resize(UBound(tableauinitial, 1), UBound(tableauinitial, 2)) = tableauinitial ' remettre tableau dans son état avant tri
    End With
End Sub

salutations h2so4 ,

merci pour votre attention. votre proposition est bonne, mais elle n'est toujours pas exacte pour ce dont j'ai besoin. votre proposition vise le top 10 pour tous les Participants dans la colonne C.

mon besoin est que la macro observe également la variable de cellule S1 (en jaune), elle filtrera la variable S1 dans la colonne C puis extraira le top 10 le plus grand .

nota: il peut arriver que nous n'ayons pas 10 valeurs plus élevées, mais pas de problème, vous pouvez alors extraire les plus grandes .

sera-t-il possible de faire tout cela dans une seule macro?

Bonjour,

désolé, le critère S1 (bien que tu l'aies précisé), m'avait échappé.

Sub trip()
    With Sheets("feuil4")
        Set tableau = .Range("A1").CurrentRegion
        tableauinitial = tableau 'copie avant le tri
        .Range("R1").Resize(tableau.Rows.Count, 1).FormulaR1C1 = "=if(rc3=r1c19,1,0)"
        Set tableau = .Range("A1").CurrentRegion
        tableau.Sort key1:=.Range("R1"), order1:=xlDescending, key2:=.Range("p1"), order2:=xlDescending, Header:=xlYes 'tri
        Set ws1 = Sheets("feuil1")
        For i = 1 To 11 'copie des colonnes des 11 premières lignes
            If i > 1 And .Cells(i, "C") <> .Range("s1") Then
                Exit For
            Else
                ws1.Cells(i, 1) = .Cells(i, "B")
                ws1.Cells(i, 2) = .Cells(i, "D")
                ws1.Cells(i, 3) = .Cells(i, "H")
                ws1.Cells(i, 4) = .Cells(i, "P")
            End If
        Next i
        .Range("A1").Resize(UBound(tableauinitial, 1), UBound(tableauinitial, 2)) = tableauinitial ' remettre tableau dans son état avant tri
        .Columns("R:R").ClearContents
    End With
End Sub

Merci beaucoup monsieur h2so4 , c'est ce dont j'ai besoin .

un gros câlin .

Rechercher des sujets similaires à "vba extraire top grands"