Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Filtrer un TCD avec VBA

JLR67

XLDnaute Nouveau
Bonjour,
J'ai une formule VBA qui me permet de filtrer le critère "Mois" d'un TCD d'après une cellule"H2". Je souhaite y rajouter la possibilité de filtrer un autre critère "Année" d'après la cellule "H3".
Mes connaissances VBA sont limitées.
Merci pour votre aide

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("H2")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Comptable").PivotTables("Tableau croisé dynamique1")
Set xPFile = xPTable.PivotFields("Mois")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
 

chris

XLDnaute Barbatruc
Bonjour
Pourquoi ne pas tout simplement utiliser une chronologie ou des segments prévus pour filtrer d'un clic sans coder ?

De plus en VBA selon la structure du TCD, le code n'est pas le même
 

JLR67

XLDnaute Nouveau
Bonjour Chris,
Les cellules sont renseignées par un Userform et c'est pour cela que je n'utilise pas les segments. Il y a peut être une solution qui permet de passer directement de la comboBox au filtre du TDC, mais là, mes compétences sont trop trop limitées.
Je joins un modèle qui reprend une partie de mon fichier
Merci à toi de t'intéresser à mon problème
 

Pièces jointes

  • Test 1.xlsm
    38.2 KB · Affichages: 9

chris

XLDnaute Barbatruc
RE

Le problème est qu'il faudrait adapter les listes déroulantes aux périodes existantes ou bien contrôler qu'il y a des valeurs pour la période choisie sinon le code plantera.

En plus avec une source à double entrée le TCD n'est pas optimisé

Une chronologie sur le TCD et un bouton pour l'impression suffiraient.

Mais ton exemple n'ayant pas l'onglet que tu imprimes, on n'a qu'une vue limitée du problème
 

JLR67

XLDnaute Nouveau
Re
En fait, l'impression demandée est le TCD. Mais je ne vois pas en quoi cela pourrai influencer ma macro de filtre dans mon TCD. Mais je n'y comprends pas assez pour dire que cela n'a pas d'incidence. Mais pourriez vous ne pas m'indiquer le code qu'il faudrait, en réponse à ma question. En sachant que le code actuel ne plante pas quand l'indication de la cellule ne correspond pas à un mois qui n'est pas dans l'Item.
Merci
 

chris

XLDnaute Barbatruc
RE
le code actuel ne plante pas quand l'indication de la cellule ne correspond pas à un mois qui n'est pas dans l'Item
le On Error Resume Next
évite le plantage en cas d'année et/ou mois inexistant et fait tourner le code plusieurs fois jusqu'à la sortie pour obtenir finalement un TCD non filtré : quel intérêt alors de l'imprimer ?
 

chris

XLDnaute Barbatruc
RE
Je propose cela

On choisit la période et si nécessaire on lance l'impression mais, comme déjà dit ton code d'impression ne correspondant pas à l'exemple fourni, l'extraire de cet exemple ne permet pas de le tester...
 

Pièces jointes

  • 1672350866984.png
    20.2 KB · Affichages: 19

JLR67

XLDnaute Nouveau
Re,
Effectivement, je peux prendre ton exemple pour éviter de faire un code pour le tri à partir de l'userform. Mais l'idée de départ était d'éviter que les utilisateurs soient obligés d'aller dans les onglets pour définir l'impression. Mais faute de mieux, je prends ton exemple en plaçant le segment et le bouton d'impression sur la page d'accueil.
Encore merci et mes meilleurs voeux pour la nouvelle année.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…