GRANDE.VALEUR sur un sous-ensemble

Bonjour à tous,

Malgré le titre, je ne souhaite pas faire simplement la plus grande valeur d'un sous-ensemble.

Ce que je souhaiterai, ce serai de pouvoir identifier, dans un sous-ensemble, les 10% d'élements les plus chers.

Ci-dessous le fichier sur lequel je travailler.

Pour information, j'ai des réseaux différents (ID_RESEAU) qui vont de R001 à R047, j'ai mes éléments uniques par réseau (ID_ELEMENT) et j'ai un coût par element.

Le but étant de dire pour chaque réseau, quels sont les 10% d'éléments les plus chers pour chaque ID_RESEAU.

Ainsi, par exemple pour le R001, j'ai 266 éléments, je veux donc identifier les 27 éléments (10% de 266) les plus chers.

J'ai pas mal cherché sur internet, j'ai testé grande valeur, j'ai testé les 10 premiers éléments d'un tableau croisé dynamique ainsi que 2 ou 3 formules à bases de index equiv et je n'ai pas réussi à avoir le résultat escompté, la difficulté étant d'avoir 10% des valeurs pour chaque réseau R0XX.

Merci d'avance pour vos réponses éventuelles!

20reseau-plus-cher.xlsx (408.13 Ko)

Bonjour,

Une proposition à étudier.

Cdlt.

15reseau-plus-cher.xlsm (624.92 Ko)
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim n As Long
    On Error GoTo err_Handler
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    With Target
        .PivotCache.MissingItemsLimit = xlMissingItemsNone
        With .PivotFields("ID_ELEMENT")
            .ClearAllFilters
            .AutoSort xlDescending, "C_SITE "
            n = WorksheetFunction.RoundUp(.DataRange.Rows.Count * 0.1, 0)
            .PivotFilters.Add Type:=xlTopCount, _
                              DataField:=Target.PivotFields("C_SITE "), _
                              Value1:=Int(n)
        End With
    End With
exit_Handler:
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
    Exit Sub
err_Handler:
    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description
    Resume exit_Handler
End Sub

Bonjour,

merci pour ce fichier!

Le résultat est correct, par contre je ne suis pas très certain de savoir l'appliquer à un autre fichier de résultats: en effet, je ne vois pas trop où intervient le vba, et je ne comprends pas comment le tableau croisé dynamique arrive à étendre ou non le nombre de valeur affichées selon l'ID_RESEAU.

Serait-ce possible d'avoir une macro qui, dans une nouvelle colonne que l'on peut nommer "10%_CHER", une valeur à "OUI" devant les lignes concernées?

le but étant de pouvoir filter rapidement sur l'ensemble des R0XX les éléments les plus chers par réseau.

Rechercher des sujets similaires à "grande valeur ensemble"