Re : Afficher un top n des valeurs les plus ou moins fréquentes
Bonsoir
Zedairone et bienvenue sur XLD
,
Bonsoir R@
chid ,
Comme c'est votre première intervention, j'ai construit un fichier en attendant le votre
.
L'essai est basé sur une fonction personnalisée (en VBA) qui s'écrit:
=FreqRang(Plage, nOrdre) où:
- Plage est la plage des valeurs
- nOrdre est le rang de l'élément désiré
ex n°
1: =FreqRang($A$1:$E$500;
4) : parmi les valeurs apparaissant le plus au sein de la plage $A$1:$E$500, on veut la quatrième valeur.
ex n°
2: =FreqRang($A$1:$E$500;
-2) : parmi les valeurs apparaissant le moins au sein de la plage $A$1:$E$500, on veut la deuxième valeur.
Notez le signe
moins pour indiquer qu'on veut travailler avec les valeurs apparaissant
le moins.
Pour indiquer le rang dans le fichier, on a utilisé le terme COLONNES($H4:H4) qui renvoie le nombre de colonne de la zone $H4:H4 (donc ici on renvoie
1). Lorsque cette expression est recopiée vers la droite, elle va renvoyer
2, puis
3, puis
4, etc.
Bien sûr, si on ne veut que les 5 première ou dernières valeurs, on efface les cellules contenant la formule après 5 cellules résultats.
Une particularité qui a son importance:
Le code de la fonction personnalisée utilise des objets de type Dictionary. Il faut activer la référence à la bibliothèque qui met à disposition ce type d'objet. Pour activer cette référence, suivez les instruction ci-dessous:
Le fonctionnement nécessite l'activation de la référence à "
Microsoft Scripting Runtime". Pour cela:
.
- Se placer dans l'éditeur VBA (touches Alt+F11)
- Sélectionner le menu "Outils / Références..."
- Dans la boîte de dialogue, chercher "Microsoft Scripting RunTime"
- Cocher la case correspondante (si ce n'est pas déjà le cas) puis cliquer sur "OK"
Rem 1: l’onglet "Nombre" contient un exemple avec une plage ne comportant que des nombres.
Rem 2: l’onglet "Texte & nombre" contient un exemple avec une plage mélangeant textes et nombres.
Rem 3: Juste pour la vérif., j'ai rajouté les fréquences d'apparition dans le tableau en gris (NB.SI(...). Ce tableau peut être effacé bien sûr!
Attention! La fonction n'est
pas du tout optimisée. Elle convient pour des "petites" quantités de données sources.