afficher une liste décroissante des noms qui reviennent le plus souvent

  • Initiateur de la discussion Initiateur de la discussion JLO39
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JLO39

XLDnaute Nouveau
Bonjour chers forumeurs 🙂

J'ai effectué des recherches sur le forum avec les mots clés INDEX, RECHERCHEV et NBSI sans trouver mon bonheur ;(

Dans le fichier joint, vous pourrez voir deux tableaux.

Celui du haut donne le résultat obtenu sur une autre feuille appelé 'Tri Rapide'. (J'ai mis en E et G les formules qui correspondent aux résultats en A et C)

C'est sur celui du bas que je souhaiterais obtenir le résultat que je vais vous demander.

Ma demande:

Je souhaiterais que le tableau du bas soit une liste décroissante des noms qui reviennent le plus souvent dans le tableau du haut !! Il n'est aucunement obligatoire qu'il y ait l'indication que j'y ai mise du nombre de fois où l'on retrouve ce nom. Le classement décroissant me suffit largement 🙂

J'ai tenté des choses avec NBSI mais il me donne le nombre d’occurrence mais sans le nom et j'ai tenté aussi avec INDEX puis RECHERCHEV mais sans arriver au résultat escompté !! Peut-être faut-il imbriqué des formules, chose avec lesquels j'ai du mal !! Je suis vraiment pas un pro d'excel 🙂

Merci d'avance à ceux qui se pencheront sur le problème...
JLO
 

Pièces jointes

Pièces jointes

Dernière édition:
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Bonsoir BOISGONTIER et merci pour ta solution.

J'ai voulu reporter ta formule dans mon tableau d'origine avec une sélection de la plage adéquate mais ça ne fonctionne pas 🙁

Y-a-t-il autre chose de "caché" qui fait que ça fonctionne sur ton tableau et pas sur le mien ?
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Je comprends vraiment rien à tes formules et fichiers, je rappelle que je suis pas du tout un pro d'excel et que la moindre formule est du chinois pour moi.

Ce que tu donnes sur ton site est déjà pour des personnes ayant déjà de l'expérience avec excel, ou sinon je suis complètement débile 🙁

Merci en tout cas d'avoir pris le temps de répondre
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Bonjour JLO39,
Salut JB,

Si JLO repasse par ici, une autre proposition, nettement moins "automatisée" (mais qui semble fonctionner ... et pour laquelle j'ai ajouté des indications dans le fichier lui-même).

C'est un Tableau Croisé Dynamique qui est utilisé; les indications dans le classeur ne suffiront sans doute pas à acquérir une maîtrise d'Excel 😀 et nécssiteront sans doute l'une ou l'autre recherche d'info supplémentaire (on n'a rien sans rien, mon pauvre monsieur 🙂).
 

Pièces jointes

Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Solution formule

1er
=INDEX(champ;MODE(SI(champ<>"";EQUIV(champ;champ;0))))
Valider avec maj+ctrl+entrée

2e
=INDEX(champ;MODE(SI((champ<>"")*(champ<>D1);EQUIV(champ;champ;0))))


Pour une formule recopiable (DAVID84)

Code:
=INDEX(champ;MODE(SI((champ<>"")*(NB.SI(D$1:D1;champ)=0);EQUIV(champ;champ;0))))


JB
 

Pièces jointes

Dernière édition:
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Bonjour Modeste, JB,

@Modeste, merci pour ta solution, elle fonctionne trés bien mais il est vrai que je souhaite quelque chose d'entièrement automatisé !! Au pire je crée une petit macro avec un bouton à cliquer pour effectuer les mises à jour !! Un grand merci encore 🙂

@JB, j'ai nommé la liste de nom dans ma colonne "champ" comme toi, puis j'ai copié ta formule dans la cellule adéquate de mon fichier mais cela me renvoie un #VALEUR! Comment ça se fait qu'il ne me renvoie pas ce qu'il faut ? Y-a-t-il quelque chose à activer dans les options excel ou une macro quelconque ??

Merci à vous deux pour votre aide 🙂
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

@JB,

merci pour la nouvelle formule, celle de DAVID84, mais il y a un smiley dedans 🙁 et si je met un "deux points, fermer la parenthèse" (qui équivaux au smiley, ça dit qu'il y a erreur dans la formule !
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Il faut valider avec maj+ctrl+entrée

Code:
=INDEX(champ;MODE(SI((champ<>"")*(NB.SI(A$16:A16;champ)=0);EQUIV(champ;champ;0))))

PS: Pour une BD importante, la solution fonction perso est +performante.

JB
 

Pièces jointes

Dernière édition:
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Merci JB, on avance 🙂

Ça calcule bien les lignes A16, A17 et A18 mais pas A19 chez moi !!
Le nombre d'apparitions a changé entre temps, les résultats en nombre d'apparitions sont maintenant de 3 (en A16), 2 (en A17 et A18), et 1 (en A19) !! Est ce parce qu'il n'y a qu'une apparition dans le tableau du haut que ça me marque #N/A en A19 ?
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Après quelques tests, l'erreur #N/A a l'air de venir de là 🙂 Toutes les lignes donnant 1 comme résultat ne sont pas comptabilisées et renvoient #N/A
Une solution ou pas à ce dernier souci ?
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Bonjour,
Après quelques tests, l'erreur #N/A a l'air de venir de là 🙂 Toutes les lignes donnant 1 comme résultat ne sont pas comptabilisées et renvoient #N/A
Une solution ou pas à ce dernier souci ?
sans fichier exemple reproduisant ton problème difficile de t'aider puisque sur les autres fichiers cela fonctionne...
 
Re : afficher une liste décroissante des noms qui reviennent le plus souvent

Salut

PS: Pour une BD importante, la solution fonction perso est +performante.
JB
Dans ce cas je passe par une macro (affaire de goût n'est-ce pas JB 😀 ?) ...
En adaptant les adresses,
VB:
Private Sub Stat()
  Dim D As Object, R As Range, n As Long
  Application.ScreenUpdating = 0
  Set D = CreateObject("Scripting.Dictionary")
  For Each R In Range("C2", [C65000].End(xlUp)): D(R.Value) = "": Next
  n = D.Count
  [F2].Resize(n) = Application.Transpose(D.keys)
  [G2].Resize(n).FormulaLocal = "=NB.SI(C:C;F2)"
  Range("F2:G" & n) = Range("F2:G" & n + 1).Value
  Range("F2:G" & n + 1).Sort [G2], 2
End Sub

PS : là, la casse est respectée !
 

Pièces jointes

Re : afficher une liste décroissante des noms qui reviennent le plus souvent

PS : là, la casse est respectée !
oui mais par contre le compte n'y est pas entre OUT et out qui doivent comptabiliser 3 et 1 et non 4 et 4.

Sinon on peut directement comptabiliser les items et décider ou non du respect de la casse via le dictionnaire (D.CompareMode).

Code:
Sub test()  
Dim D As Object, R As Range, n As Long
  Set D = CreateObject("Scripting.Dictionary")
  'D.CompareMode = TextCompare 'si l'on veut respecter la casse
  For Each R In Range("C2", [C65000].End(xlUp)): D(R.Value) = D(R.Value) + 1: Next
  n = D.Count
  [i2].Resize(n) = Application.Transpose(D.keys)
  [j2].Resize(n) = Application.Transpose(D.items)
  Range("i2:j" & n + 1).Sort [j2], 2
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour