Tableau croisé dynamique: regroupement des choix

jojo57

XLDnaute Nouveau
Bonjour. J'espere que tout le monde va bien. Vous allez peut etre pouvoir m'aider?
voila, j'ai un tableau croisé dynamique en exemple qui prend ses données dans la base de données. Sur la page code marque, j'ai les codes des marques de voiture et sur la feuille code auto, j'ai les modeles qui constituent les marques.

Moi ce que j'aimerai , c'est de pouvoir trier mon tableau croisé dynamique (constitué des ventes modeles) en fonction des marques. Par exemple, au lieu de selectionner dans le tableau aventador et gallardo pour lamborghini dans le tcd, j'aimerai qu'avec ma liste deroulante, ces choix se trient. Par exemple si je selectionne Skoda dans la liste, il ya les modeles Skoda qui se selectionnent dans le TCD.

J'avais pensé enregistrer des macro en fonction des choix que je faisais dans le tcd et de les associé a la liste deroulante. Cependant, j'ai une contrainte: c'est que la liste des modeles peut changer dans une marque. Donc je ne peux pas enregistrer des macro en selectionnant des modeles dans le tcd.

Il faudrait faire en fonction de la liste deroulante: si dans la liste deroulante, c'est skoda selectionné, dans la feuille code auto il yaura "vrai" a coté des modeles skoda. Maintenant, il faudrait copier coller ailleurs les modèles correspondants à VRAI (il ya peut etre plus facile, et plus direct), et apres faire une macro qui puisse en fonction de ces modeles, selectionner les choix dans le tcd. Ma connaissance en vba est tres faible, je me limite a l'enregistreur, donc si vs pouviez m'aider.

MERCI
 

Pièces jointes

  • exemplejojo.xls
    15.5 KB · Affichages: 97
  • exemplejojo.xls
    15.5 KB · Affichages: 103
  • exemplejojo.xls
    15.5 KB · Affichages: 99

Vilain

XLDnaute Accro
Re : Tableau croisé dynamique: regroupement des choix

Bonjour,

Pourquoi te compliques tu tant la vie ?
N'est il pas plus simple de rajouter dans ta base de donnée le nom de la marque, puis de l'ajouter à ton TCD et enfin de mettre le champ marque en filtre de rapport ?

En attente de ta réponse...
 

jojo57

XLDnaute Nouveau
Re : Tableau croisé dynamique: regroupement des choix

Ben en fait c'est compliqué. La c'est un exemple, mais le vrai fichier, je ne peux faire le filtre. j'ai des graphiques bulles qui sont reliés, j'ai des macros qui me collent les données chaques mois etc... et mes patrons (je suis stagiaire de fin detudes) preferent ne pas mettre de filtre...

j'apprends tous les jours un peu avec le vba, mais des que ça se complique...
 

mth

XLDnaute Barbatruc
Re : Tableau croisé dynamique: regroupement des choix

Bonjour jojo, Gillus :)

Tellement d'accord avec Gillus que je n'ai pas pu m'empêcher de faire un 'tit exemple :)

Très bonne journée à tous,

mth
 

Pièces jointes

  • xemplejojo(1).xls
    43 KB · Affichages: 171

Dugenou

XLDnaute Barbatruc
Re : Tableau croisé dynamique: regroupement des choix

Bonjour à tous,

Je pense que tu devrais calculer et afficher la liste des modèles correspondants à la marque choisie puis ensuite récupérer les chiffres avec un fonction Liretableaucroisédynamique.
voir pj pour le principe, il reste à mieux manager l'affichage des modèles
 

Pièces jointes

  • filtre et tcd jojo-1.xls
    18 KB · Affichages: 86

chris

XLDnaute Barbatruc
Re : Tableau croisé dynamique: regroupement des choix

Bonjour

Coucou à Mth et Dugenou

Une autre solution : passer par un regroupement des modèles dans le TCD :
sélectionner les divers modèles appartenant à une marque, clic droit, grouper puis renommer le groupe.

Une fois tous les groupes faits le TCD tournera comme un moteur de ... je vous laisse deviner.
 

Pièces jointes

  • exemplejojo.xls
    16.5 KB · Affichages: 65
  • exemplejojo.xls
    16.5 KB · Affichages: 69
  • exemplejojo.xls
    16.5 KB · Affichages: 72

jojo57

XLDnaute Nouveau
Re : Tableau croisé dynamique: regroupement des choix

bonjour, merci pour toutes vos reponses. J'en ai parlé à mon superieur, et lui il veut qu'on puisse non seulement selectionner une marque, mais qu'on puisse par exemple rajouter un modèle d'une autre marque dans la liste des items...

donc le seul moyen que je vois c'est une macro. Je ne suis pas très fort, je m'aide de ce que je trouve et de l'enregistreur. Avec ça , ça marche, mais c beaucoup beaucoup trop long...

Donc ca c'est la vraie macro de mon vrai fichier, pas de mon exemple.

Code:
Sub tcd()
Application.ScreenUpdating = False
    Application.Calculation = xlManual

With ThisWorkbook.Sheets("modele").PivotTables("Tableau croisé dynamique2").PivotFields("Modelechoix" _
        )
        
nom_marque_test = ThisWorkbook.Sheets("modele").Range("E57").Value
For Each cellule In ThisWorkbook.Sheets("code_modele").Range("corresp_marque_modele")

        .PivotItems(ThisWorkbook.Sheets("code_modele").Range("A" & cellule.Row).Value).Visible = (nom_marque_test = cellule.Value)
   
Next

    End With
    Application.Calculation = xlAutomatic
End Sub

donc pour un peu expliquer, mon tableau croisé dynamique se trouve sur ma feuille modele, et dans la cellule E57, j'ai ma liste deroulante avec le nom des marques. La cellule pour choisir les items dans le TCD est nommée Modelechoix. La feuille code_modele comprend la liste des modeles en colonne A (a partir d'A3), et la marque correspondante en colonne D (à partir de D3). Dans la cellule E3, j'ai une liste deroulante (validation de donnée), qui est une plage variable nommée corresp_marque_modele. Celle ci est égale à : =DECALER(code_modele!$D$1;2;0;NBVAL(code_modele!$D:$D)-1;1).

Donc ma macro fonctionne mais elle mets 3 min à s'executer. Etape par etape, c'est ca qui est long:

Code:
   .PivotItems(ThisWorkbook.Sheets("code_modele").Range("A" & cellule.Row).Value).Visible = (nom_marque_test = cellule.Value)
   
Next
. Il me fait ça 35 fois, le nombre de marque...
et c'est beaucoup trop long.

Est ce qu'il ya quelqu'un qui est assez fort en vba pour trouver un moyen de me faire ça en moins de 10 sec? Je ne sais même pas si ca peut etre possible. Merci d'avance
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
221

Statistiques des forums

Discussions
312 473
Messages
2 088 716
Membres
103 932
dernier inscrit
clotilde26