Filtre Dynamique sur plusieurs TCD

CyK

XLDnaute Junior
Bonjour le Forum,
Bonjour le Fil,

Voilà, dans un fichier j'utilise un feuille récapitulative, sur laquelle j'ai des listes de choix (dans l'exemple joint 1 seule), j'aimerai mettre à jour des TCD issus de différentes sources de données de manière à ce que les TCD soit filtrés de telle manière que les champs de 'pages' soit égaux aux critère sélectionné dans la liste.

Autrement dit utiliser 1 liste et opérer automatiquement le filtre sur X TCD

D'avance merci. [file name=tcddyn.zip size=3858]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tcddyn.zip[/file]
 

Pièces jointes

  • tcddyn.zip
    3.8 KB · Affichages: 230

Dan

XLDnaute Barbatruc
Bonsoir,

J'ai regardé ta demande attentivement mais je me rappelle avoir déjà eu cette demande sans pouvoir réellement donner une solution.

Pour ce qui est de ton cas, je te propose ce qui est en feuill1(2) :

- Faire un seul TCD sur base du tableau de gauche qui reprend les données des deux TCD que tu as faits mais dans des colonnes séparées
- Un tableau de résultats à droite du TCD. Pour autant que la cellule B19 appartenant au TCD ne bouge pas, tu y obtiens les résultats demandés. Le choix se faisant au travers de la cellule B19 du TCD.

Je te conseille de mettre ces résultats dans une feuille séparée et pas en dessous des tableaux comme cela est présenté ici afin de laisser de la place si tu as d'autres données.
De même pour le TCD, laisse de la place en dessous et à droite s'il doit s'agrandir.

Si pb n'hésite pas.

;) [file name=tcddyn_v02.zip size=7497]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tcddyn_v02.zip[/file]
 

Pièces jointes

  • tcddyn_v02.zip
    7.3 KB · Affichages: 213

CyK

XLDnaute Junior
Merci Dan, mais ce n'est pas tout à fait ce que je cherche

En fait je me demandais s'il n'était pas possible de modifier dynamiquement :

Code:
    ActiveSheet.PivotTables('Tableau croisé dynamique2').PivotFields( _
        'Point de Vente').CurrentPage = 'BB'

En faisant un truc du genre :
Code:
Private Sub CommandButton1_Click()
    Dim Selection_Liste As String
    Selection_Liste = Range('B17').Value
        
    ActiveSheet.PivotTables('Tableau croisé dynamique2').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    ActiveSheet.PivotTables('Tableau croisé dynamique4').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    ActiveSheet.PivotTables('Tableau croisé dynamique5').PivotFields( _
        'Point de vente').CurrentPage = Selection_Liste
End Sub

Mais je ne sais pas si on peut faire une commande de type on_change sur la liste de validation en B17

Ou alors il faut que j'utilise un truc genre 'Liste déroulante' peut être. [file name=tcddyn_20060120095348.zip size=9844]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tcddyn_20060120095348.zip[/file]
 

Pièces jointes

  • tcddyn_20060120095348.zip
    9.6 KB · Affichages: 169

CyK

XLDnaute Junior
Merci Dan,

Je pense avoir trouvé, mais si tu as un autre proposition, je suis preneur (et je pense ne pas être le seul, vu le nombre de personnes recherchant ce type de chose sur le net)

Voilà en fait j'utilise Worksheet_change pour capturer une modif de la cellule B17 et je réalise les modifs de réf des TCD :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, _
Range('B17')) Is Nothing Then
    Dim Selection_Liste As String
    Selection_Liste = Range('B17').Value
        
    ActiveSheet.PivotTables('Tableau croisé dynamique2').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    ActiveSheet.PivotTables('Tableau croisé dynamique4').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    ActiveSheet.PivotTables('Tableau croisé dynamique5').PivotFields( _
        'Point de vente').CurrentPage = Selection_Liste
End If

Ci joint le fichier [file name=tcddyn_20060120143746.zip size=12356]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tcddyn_20060120143746.zip[/file]
 

Pièces jointes

  • tcddyn_20060120143746.zip
    12.1 KB · Affichages: 507

Dan

XLDnaute Barbatruc
Bonsoir,

De fait ce que tu proposes est également faisable.
J'ai adapté ta macto comme suit :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Selection_Liste As String
With ActiveSheet
Selection_Liste = Range('B17').Value
If Not Application.Intersect(Target, Range('B17')) Is Nothing Then
    .PivotTables('Tableau croisé dynamique2').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    .PivotTables('Tableau croisé dynamique4').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    .PivotTables('Tableau croisé dynamique5').PivotFields( _
        'Point de vente').CurrentPage = Selection_Liste
End If
End With
End Sub
Cette macro suppose que ta liste de validation est sur la même feuille que les TCD. En adaptant le code tu peux aussi placer la liste ailleurs. Comme je te l'ai précisé avant, ce n'est pas très bon de laisser les TCD sur la même feuille que les données.
Note aussi que ta liste de validation en B17 comporte parfois deux fois la même valeur. Raison pour laquelle je te propose le code suivant :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Selection_Liste As String
With ActiveSheet
Selection_Liste = .PivotTables('Tableau croisé dynamique2').PivotFields( _
        'Point de Vente').CurrentPage
    .PivotTables('Tableau croisé dynamique4').PivotFields( _
        'Point de Vente').CurrentPage = Selection_Liste
    .PivotTables('Tableau croisé dynamique5').PivotFields( _
        'Point de vente').CurrentPage = Selection_Liste
End With
End Sub
Dans ce code tu n'as plus besoin de la liste de validation et la référence est la cellule B20 du TCD.
Les deux codes sont à placer dans la feuille 1 de ton fichier placé ici.

NB : Cette solution ne fonctionne pas sous Excel 2004 - MAC.

Bonne lecture

;)
 

theendlessummer

XLDnaute Nouveau
Re : Filtre Dynamique sur plusieurs TCD a DAN ou pro

Bonjour a tous,

Dan, j'ai lu avec attention tes propositions pour les tcd (cf fichier au nom de tcddyn.zip) a rafraichir selon un critere commun "C" a tous dans une liste ou pas.

Par contre ma question est un peu difficile, a savoir:

J'ai le cas identique seulement le critere commun peut ne pas exister sur un des tcd a rafraichir, comment dans ce cas ignorer le rafraichissement des donnees de ce tcd si le critere "C" n'est pas trouve et passer au suivant tcd.

Si je ne suis pas assez clair dis le moi.
Merci a toi ou celui qui trouvera
Sebastien
 

laurent89

XLDnaute Nouveau
Re : Filtre Dynamique sur plusieurs TCD

Bonjour à tous, voilà je souhaite faire exactement la même choise que Cyk, j'ai donc copier le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Selection_Liste As String
With ActiveSheet
Selection_Liste = Range('B17').Value
If Not Application.Intersect(Target, Range('B17')) Is Nothing Then
.PivotTables('Tableau croisé dynamique2').PivotFields( _
'Point de Vente').CurrentPage = Selection_Liste
.PivotTables('Tableau croisé dynamique4').PivotFields( _
'Point de Vente').CurrentPage = Selection_Liste

End If
End With
End Sub

Le probleme est que ca ne marche pas chez moi erreur 1004,
La base de données de mes tableaux croisées dynamique est sur une autre feuille, est-ce que cela peut avoir un incident?

Je débute et ne comprends pas bien :(

Merci de votre aide!
 

Dan

XLDnaute Barbatruc
Re : Filtre Dynamique sur plusieurs TCD

Bonjour,

voilà qu'au hasard je découvre ton fil...

La base de données de mes tableaux croisées dynamique est sur une autre feuille, est-ce que cela peut avoir un incident?
Non cela n'a rien avoir.

Il faut vérifier ceci :
- Le nom de tes TCD : ici Tableau croisé dynamique2 et 4. Ils doivent correspondre au nom de tes TCD (clique droit dans tes TCD, puis choisir "option du tableau". Tu verras le nom en haut à gauche)
- La macro de Type Private doit être placée dans la feuille contenant les TCD (tous les TCD sur la même feuille). Cette macro réagit sur le change de la cellule B17 également sur la feuille contenant les TCD.

A te relire

Amicalement

Dan
 

alessandra

XLDnaute Nouveau
Re : Filtre Dynamique sur plusieurs TCD

Bonjour,

Je suis dans une réelle impasse, j'espere que l'un d'entre vous pourra m'aider...

Mon cas est plus ou moins similaire à celui de CyK.

Voici les détails:
- j'ai un feuille contenant toutes mes données.
- j'ai 14 feuilles contenant chacune un TCD avec les meme parametres et ayant pour meme source (la feuille de données).
- j'alimente ma feuille de données régulièrement et je dois par conséquent changer les dates de filtre des tous mes TCD.

Pour le moment, je fais ca manuellement, TCD par TCD, mais c'est très fastidieux...

J'ai regardé le fichier de CyK mais je n'arrive pas a trouver les macro et comprendre le fonctionnement de l'automatisme.

Mon ojectif:
J'ai créer un userform contenant 2 combox et un bouton de validation. L'idée sera d'afficher dans la première combox toutes les dates accessibles par les TCD et dans la deuxième faire exactement la meme chose. Puis en cliquant sur valider, les TCD se mettraient tous à jour.

Auriez vous quelques pistes à mon sujet? :(

Merci d'avance pour votre précieuse aide!!

Alessandra
 

Discussions similaires

Réponses
7
Affichages
1 K

Statistiques des forums

Discussions
312 216
Messages
2 086 344
Membres
103 194
dernier inscrit
rtison