Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Recherche des 10 plus grandes valeurs successives

Lorenzini

XLDnaute Occasionnel
Bonjour,

N'ayant pas trouvé ce que je cherchais, je viens demander de l'aide sur le forum :
J'ai un tableau très simple avec 3 colonnes : Nom de service - Matériel - Prix
Dans un second tableau, j'ai commencé par trier les 10 plus grandes valeurs (Prix) en ordre décroissant.
Peut-être est-ce simple pour vous ; pour moi, je bloque (vu mon niveau débutant).
Comment fait-on pour trier aussi par service ?
Car ma formule me renvoie toujours (et uniquement) le 1er service rencontré.
Me dirigerai-je vers une formule matricielle ?
J'ai tenté d'expliquer dans le fichier joint le résultat que j'espérais obtenir par formule...

Vos aides sont toutes les bienvenues
 

Pièces jointes

  • TEST_GRANDES_VALEURS.xlsx
    13.4 KB · Affichages: 11

Gen Rose

XLDnaute Impliqué
Supporter XLD
Bonjour
Est-ce obligé par formule?

Car en utilisant le tableau excel avec les filtre; en filtrant d'abord service; ensuite Prix, on obtient exactement le résultat souhaité.
Voir p.j.
 

Pièces jointes

  • TEST_GRANDES_VALEURS_tableau.xlsx
    16 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lorenzini,
Le problème est que GRANDE.VALEUR ne traite pas les d'exæquos.
Une astuce possible est de créer une colonne qui peut être masquée et qui contient :
VB:
=D2+LIGNE()/100000
Comme le N° de ligne change ... à chaque ligne, il ne peut plus y avoir d'exæquos.
 

Pièces jointes

  • TEST_GRANDES_VALEURS.xlsx
    12.7 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Bonjour

Il y a une option dans le filtre Automatique qui se nomme : 10 premiers
Donc on filtre avec cette option puis on trie la plage filtrée (sur la colonne D) du plus grand au plus petit
Ci-dessous en VBA (par commodité pour reproduire le test)
VB:
Sub Macro1()
'Etape 1 : Filtre
ActiveSheet.Range("$B$1:$D$22").AutoFilter Field:=3, Criteria1:="10", Operator:=xlTop10Items
'Etape 2 : Trie
ActiveSheet.Range("$B$1:$D$22").Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlYes
End Sub
 

Lorenzini

XLDnaute Occasionnel
Bonjour
Est-ce obligé par formule?

Car en utilisant le tableau excel avec les filtre; en filtrant d'abord service; ensuite Prix, on obtient exactement le résultat souhaité.
Voir p.j.
Bonsoir Gen Rose

Alors, obligé par formule, non (même si j'étais parti sur cette idée), mais j'avoue que j'avais pensé à la solution que tu proposes ainsi qu'à une mise en forme conditionnelle.
En fait, c'était même la seule solution que j'avais envisagé, je veux dire à ma portée.
Merci Gen Rose
 

Lorenzini

XLDnaute Occasionnel
Bonsoir sylvanu

Wow, alors là, j'aime vraiment beaucoup ta solution ! Subtil ! Il fallait y penser ; je retiens, Merci !
 

Staple1600

XLDnaute Barbatruc
Bonsoir @Lorenzini

Et quid de la proposition qui utilise le filtre automatique ?
(cf message#5)
Qui donne ce résultat

NB: La macro était juste là pour rapidement appliquer le filtre et le tri.
Mais cela se fait très facilement manuellement (sans macro)
 

Lorenzini

XLDnaute Occasionnel
Bonsoir Staple1600

Tout comme Gen Rose, j'avais pensé aux filtres ; après, j'avoue que je n'ai pas pensé au code VBA pour lequel je prends note !

Du coup, je me tâte... je suis pour le moment sur la solution de sylvanu mais d'office, j'ajoute ta solution à ma bibliothèque VBA...
Merci !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…