Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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.
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 ?
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...
Re : Tableau croisé dynamique: regroupement des choix
merci mth. Ca marche, mais dans mon vrai fichier ca va etre dur, il y a plein de choses a changer si je fais ca, il faut que je vois, et je vous redis. mais ca marche ca.
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
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.
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
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD