AFFICHER TOP 10 FOURNISSEUR EXCEL
Yellow41
Messages postés
4
Statut
Membre
-
frippons Messages postés 572 Statut Membre -
frippons Messages postés 572 Statut Membre -
Bonjour,
A partir de données excel (environ 40000 lignes), j'ai 5 colonnes (site, fournisseur, famille, sous-famille et prix). J'aimerais connaître pour chacun des sites (10 sites au total) le top 10 des fournisseurs ayant un prix total le plus élevé avec le prix total les familles et/ou sous-familles concernées (en sachant que des fournisseurs peuvent se retrouver plusieurs fois sur un même site pour des familles et/ou sous-familles différentes).
Ci-dessous un exemple de la base de données :
SITE FOURNISSEUR FAMILLE SOUS-FAMILLE PRIX
SITE 1 FOURNISSEUR 1 FAMILLE C SOUS-FAMILLE 1 4,17
SITE 2 FOURNISSEUR 11 FAMILLE C SOUS-FAMILLE 3 3,22
SITE 2 FOURNISSEUR 3 FAMILLE B SOUS-FAMILLE 2 2,55
SITE 5 FOURNISSEUR 4 FAMILLE C SOUS-FAMILLE 3 0,26
SITE 7 FOURNISSEUR 5 FAMILLE C SOUS-FAMILLE 3 3,54
SITE 3 FOURNISSEUR 6 FAMILLE C SOUS-FAMILLE 1 0,12
SITE 5 FOURNISSEUR 7 FAMILLE C 2,5
SITE 2 FOURNISSEUR 8 FAMILLE C SOUS-FAMILLE 1 0,02
SITE 2 FOURNISSEUR 3 FAMILLE A 2,35
SITE 2 FOURNISSEUR 10 FAMILLE A SOUS-FAMILLE 1 0,02
SITE 8 FOURNISSEUR 11 FAMILLE A SOUS-FAMILLE 1 0,47
SITE 4 FOURNISSEUR 12 SOUS-FAMILLE 1 0,23
SITE 1 FOURNISSEUR 13 FAMILLE A SOUS-FAMILLE 1 0,14
SITE 1 FOURNISSEUR 14 0,07
SITE 5 FOURNISSEUR 15 FAMILLE C SOUS-FAMILLE 1 1,11
SITE 3 FOURNISSEUR 16 FAMILLE C SOUS-FAMILLE 1 0,37
SITE 3 FOURNISSEUR 17 FAMILLE C SOUS-FAMILLE 1 0,83
SITE 6 FOURNISSEUR 18 FAMILLE C SOUS-FAMILLE 1 0,41
SITE 8 FOURNISSEUR 19 FAMILLE D SOUS-FAMILLE 1 0,07
SITE 8 FOURNISSEUR 18 FAMILLE E SOUS-FAMILLE 1 0,15
SITE 2 FOURNISSEUR 3 FAMILLE E SOUS-FAMILLE 1 0,83
SITE 5 FOURNISSEUR 22 FAMILLE D SOUS-FAMILLE 1 0,03
SITE 2 FOURNISSEUR 23 FAMILLE B SOUS-FAMILLE 1 0,71
SITE 2 FOURNISSEUR 24 SOUS-FAMILLE 1 0,18
J'ai fait des tableaux croisés dynamiques mais le résultat n'est pas convainquant et je pense que l'idéal serait une macro (mais là je n'y arrive pas !).
Ci-dessous le résultat que je souhaiterais avoir :
TOP 10 FOURNISSEUR
SITE 9
FOURNISSEUR PRIX TOTAL FAMILLE SOUS-FAMILLE PRIX
FOURNISSEUR 726 26,57 FAMILLE A SOUS-FAMILLE 3 1,06
FAMILLE C SOUS-FAMILLE 2 17,14
FAMILLE E SOUS-FAMILLE 2 8,37
FOURNISSEUR 723 9,04 SOUS-FAMILLE 2 9,04
FOURNISSEUR 724 7,82 FAMILLE C SOUS-FAMILLE 2 7,82
FOURNISSEUR 873 7,4 FAMILLE E SOUS-FAMILLE 1 7,4
FOURNISSEUR 286 6,05 FAMILLE C SOUS-FAMILLE 1 6,05
FOURNISSEUR 544 5,76 FAMILLE A SOUS-FAMILLE 2 0,26
FAMILLE E SOUS-FAMILLE 3 5,5
FOURNISSEUR 813 4,72 FAMILLE B SOUS-FAMILLE 3 4,72
FOURNISSEUR 744 4,35 FAMILLE B SOUS-FAMILLE 3 4,72
FOURNISSEUR 775 3,72 FAMILLE C SOUS-FAMILLE 1 3,72
FOURNISSEUR 773 3,6 FAMILLE C SOUS-FAMILLE 1 3,6
Merci pour votre aide.
A partir de données excel (environ 40000 lignes), j'ai 5 colonnes (site, fournisseur, famille, sous-famille et prix). J'aimerais connaître pour chacun des sites (10 sites au total) le top 10 des fournisseurs ayant un prix total le plus élevé avec le prix total les familles et/ou sous-familles concernées (en sachant que des fournisseurs peuvent se retrouver plusieurs fois sur un même site pour des familles et/ou sous-familles différentes).
Ci-dessous un exemple de la base de données :
SITE FOURNISSEUR FAMILLE SOUS-FAMILLE PRIX
SITE 1 FOURNISSEUR 1 FAMILLE C SOUS-FAMILLE 1 4,17
SITE 2 FOURNISSEUR 11 FAMILLE C SOUS-FAMILLE 3 3,22
SITE 2 FOURNISSEUR 3 FAMILLE B SOUS-FAMILLE 2 2,55
SITE 5 FOURNISSEUR 4 FAMILLE C SOUS-FAMILLE 3 0,26
SITE 7 FOURNISSEUR 5 FAMILLE C SOUS-FAMILLE 3 3,54
SITE 3 FOURNISSEUR 6 FAMILLE C SOUS-FAMILLE 1 0,12
SITE 5 FOURNISSEUR 7 FAMILLE C 2,5
SITE 2 FOURNISSEUR 8 FAMILLE C SOUS-FAMILLE 1 0,02
SITE 2 FOURNISSEUR 3 FAMILLE A 2,35
SITE 2 FOURNISSEUR 10 FAMILLE A SOUS-FAMILLE 1 0,02
SITE 8 FOURNISSEUR 11 FAMILLE A SOUS-FAMILLE 1 0,47
SITE 4 FOURNISSEUR 12 SOUS-FAMILLE 1 0,23
SITE 1 FOURNISSEUR 13 FAMILLE A SOUS-FAMILLE 1 0,14
SITE 1 FOURNISSEUR 14 0,07
SITE 5 FOURNISSEUR 15 FAMILLE C SOUS-FAMILLE 1 1,11
SITE 3 FOURNISSEUR 16 FAMILLE C SOUS-FAMILLE 1 0,37
SITE 3 FOURNISSEUR 17 FAMILLE C SOUS-FAMILLE 1 0,83
SITE 6 FOURNISSEUR 18 FAMILLE C SOUS-FAMILLE 1 0,41
SITE 8 FOURNISSEUR 19 FAMILLE D SOUS-FAMILLE 1 0,07
SITE 8 FOURNISSEUR 18 FAMILLE E SOUS-FAMILLE 1 0,15
SITE 2 FOURNISSEUR 3 FAMILLE E SOUS-FAMILLE 1 0,83
SITE 5 FOURNISSEUR 22 FAMILLE D SOUS-FAMILLE 1 0,03
SITE 2 FOURNISSEUR 23 FAMILLE B SOUS-FAMILLE 1 0,71
SITE 2 FOURNISSEUR 24 SOUS-FAMILLE 1 0,18
J'ai fait des tableaux croisés dynamiques mais le résultat n'est pas convainquant et je pense que l'idéal serait une macro (mais là je n'y arrive pas !).
Ci-dessous le résultat que je souhaiterais avoir :
TOP 10 FOURNISSEUR
SITE 9
FOURNISSEUR PRIX TOTAL FAMILLE SOUS-FAMILLE PRIX
FOURNISSEUR 726 26,57 FAMILLE A SOUS-FAMILLE 3 1,06
FAMILLE C SOUS-FAMILLE 2 17,14
FAMILLE E SOUS-FAMILLE 2 8,37
FOURNISSEUR 723 9,04 SOUS-FAMILLE 2 9,04
FOURNISSEUR 724 7,82 FAMILLE C SOUS-FAMILLE 2 7,82
FOURNISSEUR 873 7,4 FAMILLE E SOUS-FAMILLE 1 7,4
FOURNISSEUR 286 6,05 FAMILLE C SOUS-FAMILLE 1 6,05
FOURNISSEUR 544 5,76 FAMILLE A SOUS-FAMILLE 2 0,26
FAMILLE E SOUS-FAMILLE 3 5,5
FOURNISSEUR 813 4,72 FAMILLE B SOUS-FAMILLE 3 4,72
FOURNISSEUR 744 4,35 FAMILLE B SOUS-FAMILLE 3 4,72
FOURNISSEUR 775 3,72 FAMILLE C SOUS-FAMILLE 1 3,72
FOURNISSEUR 773 3,6 FAMILLE C SOUS-FAMILLE 1 3,6
Merci pour votre aide.
A voir également:
- AFFICHER TOP 10 FOURNISSEUR EXCEL
- Liste déroulante excel - Guide
- Clé d'activation windows 10 - Guide
- Word et excel gratuit - Guide
- Restauration systeme windows 10 - Guide
- Si ou excel - Guide
4 réponses
Bonjour.
Pourquoi une macro ? Il suffit d'utiliser :
soit la fonctionnalité Filtre en réalisant des filtres successifs,
soit l'assistant Sous-total après avoir fait les tris pertinents.
Pourquoi une macro ? Il suffit d'utiliser :
soit la fonctionnalité Filtre en réalisant des filtres successifs,
soit l'assistant Sous-total après avoir fait les tris pertinents.
Bonjour,
Une macro qui utilise des filtres automatiques pourrait surement faire l'affaire. Désolée mais je ne vais pouvoir te donner que des bouts de codes, en éspérant que ça te suffise ou que quelq'un de plus expérimenté et patient que moi te donne un code complet. :)
Dans ta macro:
Tu crées des filtres sur tes colonnes :
With ActiveSheet
If Not .AutoFilterMode Then .Range("A1").AutoFilter
End With
Dans une boucle qui va te sélectionner tes sites un à un (une boucle for?)
tu lui dis de filtrer ta colonne site sur le premier site (variable!du genre i)
Selection.AutoFilter Field:=1, Criteria1:="premier site", Operator:=xlAnd
tu lui dis de filtrer sur ta colonne prix total les 10 1er
ActiveSheet.Range("$A$1:$D$40000").AutoFilter Field:=2, Criteria1:="10", _
Operator:=xlTop10Items
Tu crées une variable Lg qui est la valeur du nombre de lignes visibles, résultantes des filtres automatiques et sélectionne la plage de cellules visibles issues de ces filtres automatiques copie les valeurs (uniquement) de la sélection et les colle en G10 (par exemple)
Dim Lg%
Lg = Range("A1").End(xlDown).Row
Range("a1:d" & Lg).Copy
Range("g10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Tu remets à zéro les filtres automatiques
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=1
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=2
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=3
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=4
Et puis bah tu finis
End sub
ça doit pouvoir marcher si tu mets ta boucle for bien en place comme il faut! Au final j'ai presque donné un code complet. :) A toi de chercher pour le reste! Je suis preneuse si tu trouves, je vais continuer à chercher de mon côté!
Bonne chance!
Beeloobop
Une macro qui utilise des filtres automatiques pourrait surement faire l'affaire. Désolée mais je ne vais pouvoir te donner que des bouts de codes, en éspérant que ça te suffise ou que quelq'un de plus expérimenté et patient que moi te donne un code complet. :)
Dans ta macro:
Tu crées des filtres sur tes colonnes :
With ActiveSheet
If Not .AutoFilterMode Then .Range("A1").AutoFilter
End With
Dans une boucle qui va te sélectionner tes sites un à un (une boucle for?)
tu lui dis de filtrer ta colonne site sur le premier site (variable!du genre i)
Selection.AutoFilter Field:=1, Criteria1:="premier site", Operator:=xlAnd
tu lui dis de filtrer sur ta colonne prix total les 10 1er
ActiveSheet.Range("$A$1:$D$40000").AutoFilter Field:=2, Criteria1:="10", _
Operator:=xlTop10Items
Tu crées une variable Lg qui est la valeur du nombre de lignes visibles, résultantes des filtres automatiques et sélectionne la plage de cellules visibles issues de ces filtres automatiques copie les valeurs (uniquement) de la sélection et les colle en G10 (par exemple)
Dim Lg%
Lg = Range("A1").End(xlDown).Row
Range("a1:d" & Lg).Copy
Range("g10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Tu remets à zéro les filtres automatiques
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=1
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=2
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=3
ActiveSheet.Range("$A$1:$C$481").AutoFilter Field:=4
Et puis bah tu finis
End sub
ça doit pouvoir marcher si tu mets ta boucle for bien en place comme il faut! Au final j'ai presque donné un code complet. :) A toi de chercher pour le reste! Je suis preneuse si tu trouves, je vais continuer à chercher de mon côté!
Bonne chance!
Beeloobop
Bonjour,
Merci pour ton aide. Je regarde ce que je peux faire mais je suis vraiment nul pour les macros
Merci pour ton aide. Je regarde ce que je peux faire mais je suis vraiment nul pour les macros
* lignes 8 et 10 > sous-famille non indiquée
* lignes 13 et 25 > famille non indiquée
* ligne 15 > ni famille, ni sous-famille
dans les résultats souhaités :
* Fournisseur 723, la famille n'est pas indiquée
* Fournisseur 726, il faut répéter cette donnée au début des 2 lignes suivantes
* Fournisseur 544, à répéter ligne suivante
Cela explique aussi que ton TCD ne donne pas de résultat convaincant !