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!
Bonjour,
Une proposition à étudier.
Cdlt.
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 SubBonjour,
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.