Demande d'aide pour trier et afficher sur une page differente

nitish

XLDnaute Nouveau
Bonjour à toutes et tous,
j'aurais besoin d'aide sur excel 2007 et je vous remercie d'avance pour vos participations.

J'ai 3 colonnes de données (Date, Vendeur, Ref de l'Article) sur une feuille
Je souhaite trier et afficher sur une feuille differente, le nombre de fois chaque article est vendu et par vendeur.

le ref de l'article peut être n'importe quel numéro à quatre chiffres.

J'ai trouvé la solution de tableau croisé dynamique, mais ce qui m’intéresse est de le faire par des formules qui affiche en permanence sur une page différente et se met à jour automatiquement les résultats dès qu'une nouvelle donnée est ajouté sur la feuille principale.

Ci-joint un fichier exemple avec données à trier et le résultat attendu en page 2.

Si quelqu'un à une solution ou un méthode à me conseiller, je suis preneur.
Merci pour votre aide.



Bien cordialement
Nitish
 

Pièces jointes

  • exemple.xlsx
    9.1 KB · Affichages: 42
  • exemple.xlsx
    9.1 KB · Affichages: 48

Dranreb

XLDnaute Barbatruc
Re : Demande d'aide pour trier et afficher sur une page differente

Bonsoir.
Par formule, je ne saurais faire, mais par macro, oui. Ce serait facile à l'aide de quelques modules de service, si vous acceptez que les vendeurs soient classés par ordre alphabétique de gauche à droite, de même que les référence articles de haut en bas.
Cela vous intéresse-t-il ?
 

nitish

XLDnaute Nouveau
Re : Demande d'aide pour trier et afficher sur une page differente

Bonsoir,
Merci dranreb de votre réponse.

Oui, je suis intéressé par le méthode macro. Je metterai un boutton à coté des données pour générer le résultat.
Dans ce cas, est il possible que la plage des données ne soit pas fixe, mais en cliquant sur le boutton, le macro doit aller chercher
automatiquement du début jusqu'à la dernière ligne de données?

Merci de votre réactivité et de votre participation.

Bien cordialement,
Nitish.
 

Dranreb

XLDnaute Barbatruc
Re : Demande d'aide pour trier et afficher sur une page differente

Ah ben non il n'y a pas de bouton: tout ce qu'il y a dans les colonnes B:C de la feuille "Donnees" est pris en compte lors de l'activation de la feuille "resultat".
 

Pièces jointes

  • GrpOrgNitish.xlsm
    73 KB · Affichages: 61
  • GrpOrgNitish.xlsm
    73 KB · Affichages: 59

nitish

XLDnaute Nouveau
Re : Demande d'aide pour trier et afficher sur une page differente

Bonjour,
Je reviens avec une nouvelle demande sur le fichier de dranreb (avec méthode macro). j'ai crée une nouvelle feuille par mois avec des données différentes et souhaite afficher les résultat sur la même page "résultat".
Exemple sur la feuille de résultat, le tri du mois de janvier commence à la ligne 1 de la feuille résultat, tri du mois de février à partir de la ligne 51 et mars à partir de 101.
Est il possible? Pouvez vous m'aider à juste ajouter dans le macro le mois de février pour que je puisse le continuer pour les autres mois jusqu'à décembre.

Merci d'avance pour ce que vous pouvez faire pour m'aider.
Nitish
 

Pièces jointes

  • GrpOrgNitish.xlsm
    73.7 KB · Affichages: 41
  • GrpOrgNitish.xlsm
    73.7 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Re : Demande d'aide pour trier et afficher sur une page differente

Bonsoir.

Oh, je préfèrerais que toutes les données soient sur la même feuille, même si ça m'oblige à extraire le mois des dates en colonnes 1.
Néanmois c'est faisable en l'état, comme ça :
VB:
Option Explicit

Private Sub Worksheet_Activate()
Dim M&
Me.UsedRange.ClearContents
On Error Resume Next
For M = 1 To 12
   Extraire ThisWorkbook.Worksheets(Format(DateSerial(1900, M, 1), "mmmm")), _
      Me.Cells(50 * M - 49, 1)
   Next M
End Sub

Private Sub Extraire(ByVal F As Worksheet, ByVal Cible As Range)
Dim Données As Collection, T(), L&, LMax&, C&, Vendeur As SsGroup, RéfArt As SsGroup
Set Données = GroupOrg(ColUti(F.[B2:C2]), 1, 2)
ReDim T(1 To 50, 1 To Données.Count * 2)
For Each Vendeur In Données
   C = C + 2
   T(1, C - 1) = Vendeur.Id
   T(2, C - 1) = "Réf. article"
   T(2, C) = "Nombre"
   L = 2
   For Each RéfArt In Vendeur.Contenu
      L = L + 1
      T(L, C - 1) = RéfArt.Id
      T(L, C) = RéfArt.Count
      Next RéfArt
   If LMax < L Then LMax = L
   Next Vendeur
Cible.Resize(LMax, C).Value = T
End Sub
 

nitish

XLDnaute Nouveau
Re : Demande d'aide pour trier et afficher sur une page differente

Merci beaucoup Dranreb

Je vais d'abord créé un fichier avec les 12 feuilles mensuel avec des données puis enregistrer le macro sur la 13ème feuille "résultat".
Je vous tiens au courant.

Je vous remercie pour votre effort et votre temps.

Bien cordialement,
Nitish
 

nitish

XLDnaute Nouveau
Re : Demande d'aide pour trier et afficher sur une page differente

Bonjour Dranreb,

Je n'ai pas réussi à avoir le résultat en mettant le macro sur la feuille 13 et la page reste vide.
Pouvez vous voir le macro et le corriger si vous avez un petit moment s'il vous plait?
Ci-joint le fichier que j'ai essayé.

Bien cordialement,
Nitish
 

Pièces jointes

  • complete try.xlsm
    34 KB · Affichages: 43

Dranreb

XLDnaute Barbatruc
Re : Demande d'aide pour trier et afficher sur une page differente

Bonjour.

Il manque les 4 modules de service, dont deux de classe.
(modules standards de service: MClassement et Utilit, modules de classe: SsGroup et TableIndex)
Par ailleurs les noms de feuilles ne correspondent pas aux noms de mois tels qu'ils sont reproduit par le format "mmmm".
Cochez aussi la référence "Microsoft Scripting Runtime", ou si vous ne voulez pas, passez la constante de compilation conditionnelle #Const MSRCochée = 0 au début du module MClassement.
 
Dernière édition:

nitish

XLDnaute Nouveau
Re : Demande d'aide pour trier et afficher sur une page differente

Bonjour,
Merci Dranreb, 2 mins sur l'internet, j'ai pu voir le format de "mmmm" et j'ai corrigé les noms des feuilles et tous fonctionne.

Merci pour avoir consacré votre temps pour moi

Bien cordialement,
Nitish
 

nitish

XLDnaute Nouveau
Re : Demande d'aide pour trier et afficher sur une page differente

Bonjour Dranreb,

Je reviens vers vous avec une nouvelle demande pour le fichier que vous m'avez écrit. Je souhaite dans le 14ème page "annuel", dans la colonne A soit inscrit tous les articles vendu par les différentes magasins dans l'année, puis dans la ligne 1, tous les magasins. Finalement pour afficher combien de fois chaque article est vendu par chaque magasin dans l'année sans afficher si c'est 0.

Je suis vraiment débutant en vba et je suis encore entrain de refaire les exercices simples disponible dans les livres. Et depuis que vous m'avais écrit ce fichier, j'essaie de comprendre comment fonctionne vos codes et je souhaite également (si vous avez un peu plus de temps), m'expliquer dans votre programme, par quel code désignez vous les plages de données dans le quel excel va chercher les noms des magasins et les ref articles. A quoi sert les 4 modules et aussi le format utiliser dans le code "ColUti(..."

J'ai ajouté un fichier exemple du résultat attendu et vous remercie pour ce que vous pouvez faire pour moi.
Nitish
 

Pièces jointes

  • GrpOrgNitish (2).xlsm
    90.4 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Demande d'aide pour trier et afficher sur une page differente

Bonsoir.

Pas encore ouvert votre classeur, mais dans votre second paragraphe vous semblez avoir dans une même phrase une question et sa réponse ! J'utilise en effet assez souvent PlgUti et ColUti pour définir une plage sur laquelle une macro doit travailler car d'après une expression Range spécifiée ne représentant que que la première cellule ou la première ligne, elles renvoient une autre expression Range qui représente toute la plage utilisée jusqu'à la dernière cellule renseignée à partir de ça.
N'est-ce pas bien expliqué en tête des Function PlgUti et ColUti du module Utilit ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Demande d'aide pour trier et afficher sur une page differente

Cette procédure devrait faire la compilation de tous les mois :
VB:
Option Explicit

Private Sub Worksheet_Activate()
Dim PlgDon As Range, M As Long
Dim Données As Collection, T(), L&, LMax&, C&, Vendeur As SsGroup, RéfArt As SsGroup
Me.UsedRange.ClearContents
On Error Resume Next
For M = 1 To 12
   Set PlgDon = ColUti(ThisWorkbook.Worksheets(M).[B2:C2])
   If Not PlgDon Is Nothing Then TableauÀAjouter = PlgDon.Value
   Next M
Set Données = GroupOrg(TableUniqueCréée(CRSrc:=3), 1, 2)
ReDim T(1 To 50, 1 To Données.Count * 2)
For Each Vendeur In Données
   C = C + 2
   T(1, C - 1) = Vendeur.Id
   T(2, C - 1) = "Réf. article"
   T(2, C) = "Nombre"
   L = 2
   For Each RéfArt In Vendeur.Contenu
      L = L + 1
      T(L, C - 1) = RéfArt.Id
      T(L, C) = RéfArt.Count
      Next RéfArt
   If LMax < L Then LMax = L
   Next Vendeur
Me.[A1].Resize(LMax, C).Value = T
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 336
Membres
111 104
dernier inscrit
JEMADA