identifier et lister les 5 premiers d'une base de donnée

erics83

XLDnaute Impliqué
Bonjour,

J'ai un classeur, avec des onglets par mois. Il s'agit d'entreprises avec qui il y a eu 1 contact. Elles ont une famille d'activité et dépendent d'une agence (=lieux). Je cherche à sortir, par famille d'activité, les 5 premières entreprises et les lister avec le nombre de fois où elles sont citées. De même, je cherche à connaitre, par famille le nombre d'entreprises citées par agence.
J'ai utilisé le tuto de JB pour compter le nombre d'occurence des entreprises, c'est très rapide, par contre après, ne sachant pas comment refaire un Dictionary (car je pense que c'est ce qu'il y a de plus rapide...ou un Tbl..ou autre...), j'ai mis des formules pour identifier les familles des entreprises comptées, j'ai repris sous forme de colonne chaque famille et classé en utilisant RANG, puis j'ai essayé d'identifier via INDEX/EQUIV, les 5 premiers....Cela fonctionne, certes, mais ce n'est pas très rapide...et surtout pas très VBA.....lol.
De même, pour le comptage par famille et agence, j'ai utilisé SOMMEPROD, qui n'est pas très rapide non plus...
Et puis, je compile en copiant/collant les résultats par mois dans des onglets spécifiques (="Tot").

Cela ne me donne pas finalement le résultat escompté, car RANG donne le même classement si ex-æquo et donc ne recopie pas le nom de l'entreprise...(cf famille F1 et classement N°4). De même, le code utilisé compte l'ensemble des entreprises, je souhaiterai avoir un classement des 5 premiers par agence....

Je suis persuadé que l'on pourrait aller beaucoup plus rapidement et simplement que de passer par des formules...mais j'ai besoin de votre aide.....et s'il faut mettre l'ensemble des données dans 1 seul onglet (=on compile les mois), cela ne me dérange pas...l'essentiel étant que je puisse avoir les 5 premiers par mois et par agence et par famille et que j'ai un tableau de comptage des familles par agence....

je sais que cela est possible via les TCD, mais le fichier initial fait 195 Mo et donc très long à charger, je cherche donc à compiler les infos, ensuite, je copirai/collerai les onglets "Tot" dans un nouveau classeur et utiliserai des TCD. (j'ai essayé de faire des TCD en lien extérieur avec cette base de donnée, mais le poids du classeur reste le même, d'où la recherche de compilation...), et ce fichier sera certainement moins lourd...

Je mets un fichier test en PJ, pour plus de clareté....
En vous remerciant par avance,

merci pour votre aide
 

Pièces jointes

  • Fichier test eric.zip
    4 MB · Affichages: 43

erics83

XLDnaute Impliqué
Merci BISSON Nicole,
Je vois tout l'intérêt de votre code, que je me mets en mémoire. Dans mon cas, il faudrait pouvoir le faire par famille (21 familles), il faudrait que je fasse une boucle sur chaque famille, et sélectionne les 5 premiers, si j'ai bien compris votre post.

Merci Bebere, à moins d'une erreur de ma part, ton fichier test est le même que le mien et donc toujours le problème du tri....lol

Merci pour votre aide,
 

Bebere

XLDnaute Barbatruc
Eric alors il faut réinscrire les F en lignes 1 DB1,DD1,DF1,etc

edit:bonjour
changer PartDAEQ,les familles restent, établissement et nbre d'après famille
 

Pièces jointes

  • Fichiertestv1.xlsm
    5.5 MB · Affichages: 22
Dernière édition:

erics83

XLDnaute Impliqué
Merci Bebere,

Oui, je pense qu'on s'est laissé distraire par mes colonnes de tri qui répondaient à un besoin lié aux formules....pour le comptage des établissements par famille et lieu, le code que tu m'avais donné fonctionne très bien, donc comme on dit, ça, c'est fait ...lol

Tu as compris mon problème : il me faudrait les 5 premiers par famille,

Merci pour ton aide,
 

erics83

XLDnaute Impliqué
Bonjour Bebere,

Toujours le même résultat....lorsque je fais tourner ton fichier, il me met E77 premier dans toutes les familles...en fait il met toujours le même résultat : E77 en 1er, E161 en 2eme, E6 en troisième, E330 en 4eme, E205 en 5eme......

Merci pour ton aide,
 

erics83

XLDnaute Impliqué
Merci Bebere,

Ce que je cherche à avoir est : par famille (F&,F2,F3, etc...), les 5 premiers établissements (E.....)
ou pour reformuler : voir quels établissements sont cités le plus grand nombre de fois et identifier les 5 premiers par famille : exemple E77 est cité 148 fois et donc arrive premier de la Famille F5, E161 arrive premier de la famille F10, E6 arrive deuxième de la famille F5, etc.....

Merci pour ton aide,
 

erics83

XLDnaute Impliqué
Merci Bebere,

Parfait ! tout fonctionne nickel et merci pour les remarques en sheets1, j'ai compris la logique utilisée.....lol...

Je vais l'appliquer à mon fichier source, et je pense que tout va aller comme sur des roulettes,

Merci pour ton aide durant tout ce post,
Merci,
Eric
 

erics83

XLDnaute Impliqué
Bonjour,
Juste une toute petite dernière question : admettons que je veuille avoir les 5 premier par famille, pour un lieu précis (par exemple L3), je sais que je dois mettre une condition "IF' sur la colonne AF et l'inclure dans le code (enfin je pense plutôt dans la Function "frequencetexte", mais je ne vois pas à quel endroit....
Merci pour votre aide,
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 101
Membres
112 661
dernier inscrit
ceucri