Faire un top 20 (les 20 références qui ressortent le plus)

  • Initiateur de la discussion Initiateur de la discussion andre.c
  • 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 !

andre.c

XLDnaute Nouveau
Bonjour,

J'ai besoin d'aide pour effectuer un top 20 sur excel. Je vous expose mon problème. Ci-joint vous trouverez le fichier concerné. Dans la colonne D se trouvent des références. Ces dernières sont ajoutées quotidiennement au fichier. J'ai besoin d'avoir un tableau à côté ou sur une autre feuille me permettant de faire apparaître les 20 références qui ressortent le plus dans cette colonne. Ce calcul doit être automatique car de nouvelles références sont ajoutées tous les jours à ce fichier.

J'ai besoin d'avoir de l'aide assez rapidement je vous remercie donc d'avance !!!!
 

Pièces jointes

Re : Faire un top 20 (les 20 références qui ressortent le plus)

Re

Il y a des macros qui font la recherche du Top lors de l'activation de la feuille et lors du changement ou l'ajout de référence dans la colonne D
ATTENTION: les ex aecos sont dans l'ordre d'apparition dans la colonne
 
Re : Faire un top 20 (les 20 références qui ressortent le plus)

Bonjour
Une grosse bise à Pierrejean

Une solution par TCD (Tableau Croisé Dynamique) : j'ai fait le ménage dans la source afin d'en faire une table de données. J'y ai néanmoins ajouté tes sous-totaux mais il sont également en TCD.

Tous cela est automatique : il y a juste à actualiser un des TCD (clic droit dans le TCD) pour que tes calculs et top 20 se mettent à jour.
 

Pièces jointes

Re : Faire un top 20 (les 20 références qui ressortent le plus)

Re

Voici l'essentiel

Code:
Sub test()
'Creation d'un dictionnaire
Set d = CreateObject("Scripting.dictionary")
'alimentation u dictionnaire avec en keys la reference et en item le nbre d'apparition
For n = 5 To Range("D" & Rows.Count).End(xlUp).Row
 If Len(Range("D" & n)) = 13 Then
   x = Range("D" & n)
   d(x) = d(x) + 1
 End If
Next





'Tri du dictionnaire
a = d.keys
b = d.items
For n = LBound(b) To UBound(b)
  For m = LBound(b) To UBound(b)
    If b(m) < b(n) Then
      temp1 = b(n)
      temp2 = a(n)
      b(n) = b(m)
      a(n) = a(m)
      b(m) = temp1
      a(m) = temp2
    End If
  Next
Next
'ecriture des 20 premieres valeurs du dictionnaire
For n = LBound(b) To 19
 Range("K" & 5 + n) = a(n)
 Range("L" & 5 + n) = b(n)
Next
End Sub

et l'accessoire :

Code:
Private Sub Worksheet_Activate()
Call test
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target.Row > 4 Then
  Call test
End If
End Sub

Visible Apres Alt F11
 
Dernière édition:
- 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

Discussions similaires

Réponses
9
Affichages
1 K
Réponses
7
Affichages
1 K
Réponses
0
Affichages
1 K
Retour