Tableaux dans vba

Tableau

  • Choix du sondage...

  • Choix du sondage...


Les résultats ne sont visibles qu'après le vote.

akni

XLDnaute Nouveau
Bonjour,
J'ai un tableau des quantités vendues par articles, clients et mois, je veux faire une récap par client sans passer par TCD quand j'utilise la méthode FOR NEXT elle tarde un peu, je crois qu'avec les tableaux Ubound et Lbound le résultat sera rapide.
ci joint mon fichier avec la macro FOR NEXT.


Merci beaucoup pour toute aide.
 

Fichiers joints

chris

XLDnaute Barbatruc
Bonjour

J'avais divisé le temps par 2 (14 secondes au lieu de 29) avec dictionary mais les sumifs étant très consommateurs...

Je suis totalement bluffé par le résultat obtenu en 1 seconde par Dranreb que je salue bien bas !

Chapeau !
 

akni

XLDnaute Nouveau
Merci beaucoup et principalement à Dranreb le resultat atteint en un temps record.

A+
 

akni

XLDnaute Nouveau
Bonjour,
comment puis-je ajouter des criteres pour avoir une récap par groupe d'articles, zone et ville.

Merci pour toute aide.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonsoir
Du coté de l'appel de fonction Gigogne, il suffit de la terminer par la suite de numéros des colonnes contenant les critères souhaités, là où il n'y a actuellement que le 3 qui devait correspondre au code client, ce qui ne semble plus être le cas. Donc dans la nouvelle liste: 3, 6, 5 pour ceux que vous citez.
Pour chacun d'eux, il faut prévoir une variable As SsGr et, dans le code, imbriquer des boucles For Each SGry In SGrx.Co supplémentaires avant de pouvoir utiliser la For Each Détail In SGrz.Co la plus interne. Tout cela est expliqué en détail dans le module MGigogne et aussi, un peu différemment, dans le module de classe SsGr.
 

Dranreb

XLDnaute Barbatruc
Par exemple comme ça, ça a l'air pas mal :
VB:
Sub Recap2()
Dim T(), L As Long, C As Long, GrpArt As SsGr, Zone As SsGr, Ville As SsGr, Client As SsGr, Détail
ReDim T(1 To 10000, 1 To 6)
For C = 1 To 3: T(1, C + 3) = "Mois " & C: Next C
L = 1
For Each GrpArt In Gigogne(Feuil1.[A2:H2].Resize([A1000000].End(xlUp).Row - 1), 3, 6, 5)
   L = L + 1: T(L, 1) = "Groupe d'articles " & GrpArt.Id
   For Each Zone In GrpArt.Co
      L = L + 1: T(L, 2) = "Zone " & Zone.Id
      For Each Ville In Zone.Co
         L = L + 1: T(L, 3) = Ville.Id
         For Each Détail In Ville.Co
            C = Détail(8) + 3: T(L, C) = T(L, C) + Détail(7)
            Next Détail, Ville, Zone, GrpArt
Feuil1.[L1:Q10000].Value = T
End Sub
Mais c'est un peu plus long, forcément, 3 comparaisons au lieu d'une pour le classement…
 

mapomme

XLDnaute Barbatruc
Bonjour à tous,

J'avais commencé à coder puis oublié l'ouvrage. Je publie donc tardivement. Durée d'exécution similaire à Dranreb mais adaptation aux données source pas souple du tout :( (ma macro s'adapte malgré tout au nombre de valeurs de la colonne 'mois'). La boîte à outils de Dranreb est top.
 

Fichiers joints

Dernière édition:

mapomme

XLDnaute Barbatruc
Bonjour à tous,

(...) comment puis-je ajouter des criteres pour avoir une récap par groupe d'articles, zone et ville. (...)
J'ai voulu adapter ma première macro en y ajoutant des paramètres. Contrairement à Dranreb, j'ai dû tout réécrire pour aboutir à la procédure :
Regrouper(Cible As range, Source As range, ColX, ColSom, ParamArray ColY())
Les explications sur l'utilisation de la procédure sont dans l'onglet "Guide".
La feuille "Data" est la feuille de départ. On y a mis deux exemples d'utilisation de la procédure.
 

Fichiers joints

Dernière édition:

akni

XLDnaute Nouveau
Merci beaucoup mapomme pour le fichier,
dans mon boulot je dois envoyer à chaque responsable de zone ses ventes :
fichier ventes zone nord ou sud avec ventes de chaque groupe d'article dans un onglet different, je n'arrive pas à automatiser cette opération si vous pouvez m'aider.

Merci beaucoup
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous n'y arrivez pas, mais qu'avez vous essayé au juste ?
Tout ce que je peux vous dire c'est que ce serait assez facile en partant d'un algorithme très similaire à celui du poste #8, et donc à l'aide du module de service MGigogne et du module de classe SsGr.
 

Dranreb

XLDnaute Barbatruc
Il n'y a que vous qui puissiez le faire, d'ailleurs, puisque vous seul savez ce que vous voulez mettre dans chaque feuille en cellule B4 et dans les colonnes C et D à partir de la ligne 7.
(Le reste, ainsi que les noms des feuilles (sauf s'il en fallait plusieurs, une pour chaque mois), on peut le deviner)
 

akni

XLDnaute Nouveau
Bonjour Dranreb, merci beaucoup pour l'interet que vous donnez à mes demandes,
pour cequi est de la cellule B4 elle est égale au mois du tableau par exemple si c'est 6 (juin) je devrai avoir dans la colonne C les ventes du mois de juin et dans la colonne D le cumul des ventes à fin juin.
Pour ce qui est des modules MGigogne SsGr j'ai essayé de comprendre leur fonctionnement mais je n'y ai pas arrivé, je vous serai tres reconnaissant si vous pouviez m'expliquer le rôle de ces 2 modules .

Merci beaucoup.
 

Dranreb

XLDnaute Barbatruc
Qu'est-ce que vous appelez le mois du tableau ? D'où est-ce qu'on le prend ?
Le Cumul à fin n c'est le cumul de tous les mois ?
Qu'y a-t-il dans les explications figurant dans ces modules qui n'est pas clair pour vous ?
Me le dire permettrait de les améliorer.
Remarque: c'est le fonctionnement que doit avoir une programmation d'application utilisant la fonction Gigogne qu'il faut comprendre. La compréhension du processus exécuté par cette fonction n'a aucune importance, il faut seulement bien comprendre la structure de la collection qu'elle renvoie. Ou plus exactement savoir quoi lui spécifier comme paramètres pour lui faire fabriquer la collection dont on a besoin.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Bonsoir à tous,

Un petit bricolage pour essai.

Attention! La zone et le groupe du 1ier onglet (nord_ groupe A) ne correspondent pas au nom de l'onglet, il faut rétablir les bonnes valeurs (Nord et A)
 

Fichiers joints

Dernière édition:

akni

XLDnaute Nouveau
Bonsoir à tous,

M. Dranreb je veux dire par mois du tableau le mois du reporting par exemple j'envoie les ventes des clients selon les critères (zone et groupe d'article) et pour chaque code client répondant à ces deux critères j'aurais en face dans la colonne C les ventes du mois choisi dans la cellule B4 et dans la colonne D j'aurais le cumul des ventes (du mois de janvier "1" jusqu'au mois du reporting cellule B4).

M. mapomme, j apprécie votre fichier il réponds à mes besoins pour le mois mais pas pour le cumul (je crois que je n' ai pas expliqué le cumul dans #14)

Merci infiniment.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
Choisi dans la cellule B4 ??. Désolé je ne comprend pas trop la démarche vu que ces feuilles sont générées automatiquement. Bon j'avais déjà fait quelque chose alors je le joins. J'avais admis que le mois à ventiler est enregistré dans un nom du classeur et la macro propose de l'incrémenter.
Ne supprimer jamais la feuille représentée par l'objet Worksheet FVent1, sinon la macro ne tournera plus.
Ce sera ma dernière proposition.
Vous avez maintenant deux exemples de procédures utilisant la fonction Gigogne. S'il vous faut d'autres rapports, écrivez vous les.
 

Fichiers joints

akni

XLDnaute Nouveau
Bonjour à Tous,
Merci beaucoup pour les fichiers, j'arrive maintenant à avoir mes rapport automatiquement et dans un temps record.

Encore merci.
:)
 

Discussions similaires


Haut Bas