Tableaux dans vba

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.
 

Pièces jointes

  • test Tableau 2.xlsm
    1.8 MB · Affichages: 116

KIM

XLDnaute Accro
Effectivement, c'est ce que je fais. C'est pour cela que j'ai pensé à une fonction paramétrable.
Je rencontre actuellement un problème avec une colonne dont les valeurs de la colonne seront les en-tête des colonnes du tableau résultat. Je cherche et j'espère y réussir.
Je vous tiens au courant
Bonne journée

KIM
 

KIM

XLDnaute Accro
Bonjour Dranreb, et le forum,
J'ai repris ton exemple de ta reponse n°18. J'ai remplacé les mois de la col MOIS par le nom des mois : Janv, Fev, etc. Je lance la macro Recap
J'ai l'erreur "Incompatibilité de type " pointée sur C = Détail(8) de la ligne :
C = Détail(8) + 3: T(L, C) = T(L, C) + Détail(7)
Je n'ai pas su la corriger. Ci-joint le fichier.
Merci de ton aide.
KIM
 

Pièces jointes

  • GigogneAkni_KIM1.xlsm
    554.4 KB · Affichages: 46

Dranreb

XLDnaute Barbatruc
Bonjour.
Ça ne se fait pas, de mettre des noms de mois.
À la rigueur on met des dates de début ou fin de mois, dont on n'affiche que le mois grâce à un format personnalisé. Ça au moins ça permettrait de calculer C = Month(Détail(8)) + 3
 

KIM

XLDnaute Accro
Re bonjour Bebere,
Dans ce cas comment faire si la colonne des titres du résultat est du texte ? Je dois faire la somme selon les colonnes des critères mais aussi répartir selon une colonne au format texte qui génère les titres des colonnes résultat. C'est pour cela j'ai changé la colonne des mois en texte.
Je le fais une macro qui génère les titres sans doublons et les calcul par par sommeprod. Je souhaite le faire avec tes outils. Est-ce possible ?
Merci de ta disponibilité et ton aide.
KIM
 

Dranreb

XLDnaute Barbatruc
Si c'est autre chose que des noms de mois, et qu'ils peuvent du coup être classés par ordre alphabétique, il y a une fonction DicInvent qui renvoie un Dictionary donnant la colonne de ventilation pour chaque valeur existante.
 

Dranreb

XLDnaute Barbatruc
C'est pas compliqué.
On déclare une variable DCols As Dictionary
Avant d'entrer dans la boucle qui explore une collection rendue par la fonction Gigogne on fait
Set DCols = DicInvent(LeMêmeTrucQuOnPréciseraÀGigogne, x, y)
Dans l'exploration de la collection: C = DCols(Détail(x))
x étant bien sûr le numéro de la colonne du tableau source contenant le critère, et y la colonne du tableau résultant où on veut mettre le 1er d'entre eux.
 

KIM

XLDnaute Accro
Bonsoir Dranreb et e forum,
J'ai suivi tes conseils et j'ai adapté tes outils à mon fichier de données.
1/ J'ai utilisé GroupOrg (ancienne version), DCol, ColUti, DicInvent et Détail (voir fichier ci-joint KIM_RecapGrpOrg_v2ok.xlsm). Dans l'onglet Recap j'ai regroupé selon 3 critères les données et calculé les sommes correspondantes par rapport à une colonne qui a servi comme titres des colonnes de l'onglet Recap. Traitement OK.
2/ J'ai voulu tester ton fichier TIdxFusion.xlsm avec les mêmes données que le fichier précédent.
J'ai changé :
Dcol en DCols ; Contenu en Co, GroupOrg en Gigogne (ci-joint fichier KIM_RecapGigogne_v2.xlsm).
J'ai un message d'erreur : "Erreur de compilation, Nom ambigu détecté :~" et pointe sur DicInvent.
Est-ce que j'ai oublié quelque chose ?
Merci d'avance pour ton aide.
KIM
 

Pièces jointes

  • KIM_RecapGigogne_v2.xlsm
    296.4 KB · Affichages: 48
  • KIM_RecapGrpOrg_v2ok.xlsm
    199.3 KB · Affichages: 47

Dranreb

XLDnaute Barbatruc
Bonsoir.
Non, c'est juste qu'il y a deux version de DicInvent dans ton classeur.
Une dans MGigogne et une dans MClassement.
Dans TidxFusions.xlsm aussi, d'ailleurs, et c'est un peu curieux que la compilation ne le signale pas. Ça peut peut être s'expliquer par le fait qu'elle n'y est utilisée nulle part.
En fait j'ai seulement mis cet ancien MClassement pour y utiliser la fonction TbIdxTVcd à un certain moment pour en comparer les performances avec la IndexerParFusions. Il ne faut pas tous ces modules en pratique. MTableaux contient en principe toutes les procédures utiles de MClassement. Mets tout son code en commentaire, et s'il ne manque rien à la compilation, supprime le. Rappel: C'était un fichier qu'en principe je ne publie pas, alors moi je peux me permettre pour mes besoin tous les mélanges infâmes que je veux !
En exploitation réelle du nouveau jeu de modules de services on n'a besoin que de SsGr, MGigogne et parfois MTableaux pour les rapports, et MSujetCBx, ComboBoxLiées et ComboBoxMmbr pour les applications en UserForm.
 
Dernière édition:

KIM

XLDnaute Accro
Bonjour Dranreb, le fil et le forum,
J'utilise actuellement ta dernière version des modules MGigogne et MTableaux avec les modules de classe SsGr et TableIndex. J'ai repris beaucoup de mes tableaux de Synthèse générés avec "Sommeprod" et je calcule la somme de colonnes selon 1, 2, 3 ou 4 critères. Quel gain de temps dans l'exécution sur de grands tableaux. Avec Dcols, je construis un tableau avec comme titre les éléments de cette colonne. La somme d'une colonne selon plusieurs critères et une colonne de titres se déroule rapidement.
Question 1 : Est-il possible de regrouper 2 ou plusieurs titres colonnes en 1 seule ? Y-a-t-il une fonction qui permet ce regroupement ?
Question 2 : Avec les mêmes critères, est -il possible de remplacer les sommes par le nombre des données d'une colonne sans doublons par rapport au titre de la colonne du tableau de synthèse défini dans DCols? Si Oui, où faut-il déclarer cette colonne ?

Merci de ton aide.
KIM
 

KIM

XLDnaute Accro
Bonjour Dranreb, le fil et le forum,
J'utilise actuellement ta dernière version des modules MGigogne et MTableaux avec les modules de classe SsGr et TableIndex. J'ai repris beaucoup de mes tableaux de Synthèse générés avec "Sommeprod" et je calcule la somme de colonnes selon 1, 2, 3 ou 4 critères. Quel gain de temps dans l'exécution sur de grands tableaux. Avec Dcols, je construis un tableau avec comme titre les éléments de cette colonne. La somme d'une colonne selon plusieurs critères et une colonne de titres se déroule rapidement.
Question 1 : Est-il possible de regrouper 2 ou plusieurs titres colonnes en 1 seule ? Y-a-t-il une fonction qui permet ce regroupement ?
Question 2 : Avec les mêmes critères, est -il possible de remplacer les sommes par le nombre des données d'une colonne sans doublons par rapport au titre de la colonne du tableau de synthèse défini dans DCols? Si Oui, où faut-il déclarer cette colonne ?

Merci de ton aide.
KIM
 

Dranreb

XLDnaute Barbatruc
Bonjour.
1) — S'il s'agit d'un regroupement arbitraire il est toujours possible de fabriquer un dictionnaire spécial si les règles sont trop compliquées pour qu'il puisse être produit par DicInvent.
2) — C'est souvent plus simple: un SsGr possède une propriété Count qui donne le nombre d'éléments de sa propriété Co.
 

KIM

XLDnaute Accro
Bonjour Dranreb et le forum,
Il est très simple maintenant de créer des synthèses classiques avec DCols et Gigogne.
Ci-joint le fichier T_RecapGigogne_vKIM1E.xlsm, onglet R1 et R2.
Les titres des colonnes de la synthèse R1 proviennent de la col 16, avec DCols. La col pour la somme selon les critères et la col 14 (SUB). J'ai aussi utilisé la propriété Count du SsGr Statut.
Voir onglet R1.
Par contre j'ai passé l'après-midi et je n'ai pas réussi à :
1- grouper des colonnes : "Col LOC + Col LOC-SC", "Col Bail CONS + ColCtrPHD + EMPH_B"
2- Calculer la somme par DPT pour chaque titre, Par OP pour chaque Titre
3- Calculer le nombre d'éléments concernés (de la col 14) pour chaque DPT et pour chaque OP par Titre.
Merci de ton aide.
KIM
 

Pièces jointes

  • T_RecapGigogne_vKIM1E.xlsm
    297.2 KB · Affichages: 43

Discussions similaires

Réponses
1
Affichages
319

Statistiques des forums

Discussions
311 541
Messages
2 080 540
Membres
101 236
dernier inscrit
patro