Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

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 !

thierry.bayard

XLDnaute Junior
Bonjour à tous,

Je bloque depuis 2h sur un problème qui va vous paraître basique : sur le document joint, je voudrait que lorsque l'utilisateur choisit un mois (cellule F7) et clique sur le bouton, les mois affichés dans le tableau de bord (en pivotFields) soient modifiés et qu'apparaissent seulement les mois 1 à celui choisit par l'utilisateur.
J'ai essayé différents codes ont celui-ci :

Sub Essai2()

For i = 1 To Range("mois1").Value
For u = 2 To 12
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Mois" _
)
.PivotItems(u).Visible = False
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Mois" _
)
.PivotItems(i).Visible = True
End With
Next
Next

End Sub


Mais rien de marche.

Merci d'avance pour votre aide.
 

Pièces jointes

Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Bonjour,

essaye ceci :
Code:
Option Explicit
Sub Essai2()
Dim i As Byte
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Mois")
    For i = 1 To .PivotItems.Count
        .PivotItems(i).Visible = True
    Next i
    For i = Range("mois1").Value To .PivotItems.Count
        .PivotItems(i).Visible = False
    Next i
End With
End Sub

bon après midi
@+
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Bonjour Thierry,

ton fichier en retour

à+
Philippe

Edit: Bonjour Pierrot .............tu vas me dire que j'aurais pu faire une boucle 😡
 

Pièces jointes

Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Excellent, ça marche nickel. J'ai simplement ajouté + 1 après "For i = Range("mois1").Value" sinon les valeurs affichées s'arrêtaient au mois précédent.

Merci beaucoup
Peut-être à bientôt
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Je réouvre la discussion car je m'aperçoit d'un petit problème supplémentaire : en fait la macro bloque lorsque l'une des valeurs n'est pas présente dans la base de donnée. Je m'explique : lorsque le mois 4 n'est présent sur aucune ligne de la base de données alimentant le TCD, la macro bloque sur la ligne ".PivotItems(i).Visible = True

Voici la macro telle que je l'ai saisie pour le moment :

Option explicit
Sub macro1
Dim i As Byte
With ActiveSheet.PivotTables("TCD2_Abs_N1").PivotFields("Mois")
For i = Application.Min(Range("CF2:CF2600")) To .PivotItems.Count
.PivotItems(i).Visible = True
Next i
For i = Range("No_mois_affiché") + 1 To .PivotItems.Count
.PivotItems(i).Visible = False
Next i
End With
End Sub

Le fait d'avoir mis Application.Min(Range...) à la place de 1 permet d'éviter le problème s'il manque le mois 1 mais pas s'il manque un mois intermédiaire.

Merci encore pour votre aide
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Re,

comprends pas comment cela peut planter, puisque c'est le numéro d'index qui est utilisé... chez moi le code ci-dessous fonctionne..
Code:
Dim i As Byte
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Mois")
    For i = 1 To .PivotItems.Count
        .PivotItems(i).Visible = True
    Next i
    For i = Range("mois1").Value + 1 To .PivotItems.Count
        .PivotItems(i).Visible = False
    Next i
End With

bonne journée
@+
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Re bonjour Pierrot,

J'envoie le fichier mis à jour après quelques modifications dans la base de données : j'ai supprimer dans un 1er temps les lignes du mois 1, puis celles du mois 4 (remplacées par 3). (C'est ce qu'il va réellement se produire sur mon fichier définitif).
On se rend compte que la macro perd un peu les pédales. J'ai essayé d'ajouter une macro pour supprimer l'historique (en module 2) puis abandonner l'idée. Bref, je suis perplexe : à l'aide !!!

Merci d'avance
 

Pièces jointes

Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Re,

logique, puisque l'on se base sur un numéro d'index des items qui va de 1 au nombre total d'items, le code ne tient pas compte qu'il s'agit en fait des noms de champs....
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Re,

essaye comme suit :
Code:
Option Explicit
Sub test()
Dim i As Byte
With ActiveSheet.PivotTables(1).PivotFields("Mois")
    For i = 1 To .PivotItems.Count
        .PivotItems(i).Visible = True
    Next i
    For i = 1 To .PivotItems.Count
         If Range("mois1").Value < CByte(.PivotItems(i).Name) Then .PivotItems(i).Visible = False
    Next i
End With
End Sub

Attention, j'ai été obligé de copier la base et de recréer un nouveau TCD, car celui fourni me parait douteux... bogue inexplicable....
 
Dernière édition:
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Bonjour à tous,

Je suis nouvelle sur le forum et j'ai quelques souci pour développer une macro (mon niveau étant vraiment débutant) mettant à jour automatiquement un tableau croisé dynamique.
Le message se rapprochant le plus de ce que je souhaite faire est la discussion ci-dessous.

Mes données générent un tableau croisé dynamqiue dans un autre onglet sur lequel je souhaite filtrer en automatique: je souhaite que l'utilisateur choisisse un pays dans une cellule et que le tableau croisé dynamique (présent sur un autre onglet) se mette à jour automatiquement.
J'ai essayé d'adapter le script ci-dessous mais au vu de mon niveau ça ne fonctionne pas.
Apparement, même en nommant correctement le tableau et les fields (nom présent dans les options du talbeau croisé dynamique) , j'ai un message d'erreur me disant que le champ est inacessible.

Merci d'avance
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Bonjour,

il eût été préférrable de créer ta propre discussion... sans voir le modèle de donnée, ton tcd et le code utilisé, cela risque d'être difficile de t'aider...

bonne journée
@+
 
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Effectivement sans le fichier ce n'est pas facile .... j'ai enfin trouvé comment l'ajouter.

Dans l’onglet « impact Assessment », je souhaite qu’en sélectionnant un département (cellule T36) et un pays (cellule T57), les tableaux croisés dynamiques (onglet hide Charts: à partir de A19 et 1 37) ) se mettent à jour automatiquement en réalisant les tri sur les cellules sélectionnées. Ces mises à jour mettant automtique à jour les grahiques sur l'onglet "impact Assessment ".

Pour l'instant j'ai supprimé tous les codes car rien ne fonctionne.

Merci d'avance pour votre aide
 

Pièces jointes

Dernière édition:
Re : Filtre automatique en VBA des valeurs d'un tableau croisé dynamique

Bonjour à tous,

Je suis débutant et vba et je rencontre un problème concernant un objectif similaire aux discussions précédentes.
Je m'explique :
je souhaite en changeant un filtre de données (cellule B1, feuille "rapport") mettre à jour le TCD ("TCD1", feuille "TCD") en fonction de ce filtre de données.
Cette sélection permettra de mettre à jour les cellules A4:B5 de la feuille "rapport".

J'ai donc essayé les macros précédentes sans succès.

Je sollicite ainsi votre aide.

Merci d'avance,

ttgg
 

Pièces jointes

- 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

Discussions similaires

Réponses
7
Affichages
770
Réponses
3
Affichages
672
Réponses
3
Affichages
896
Retour