• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Draaitabel/pivottable filteren met macro

Status
Niet open voor verdere reacties.

LDtalent

Nieuwe gebruiker
Lid geworden
22 feb 2017
Berichten
3
Hallo allemaal, ik zit met een vraag rondom een macro waarmee ik een draaitabel wil filteren. Dit is het macro wat ik nu heb:

Sub Draaitabel_filter()

Application.ScreenUpdating = False
Sheets("Draaitabellen").Visible = True
Sheets("Draaitabellen").Select
ActiveSheet.PivotTables("Vacatures_sollicitaties").ManualUpdate = True

Dim PvtTbl As PivotTable
Dim PvtField As PivotFields
Set PvtTbl = Worksheets("Draaitabellen").PivotTables("Vacatures_sollicitaties")
Set PvtField = PvtTbl.PivotFields("JobApplicationEvent_EventDate_")

'delete all filters currently applied to the PivotTable, using the PivotTable.ClearAllFilters Method
PvtTbl.ClearAllFilters

PvtTbl.PvtField("JobApplicationEvent_EventDate_").PivotFilters.Add Type:=xlDateBetween, Value1:="1-1-2016", Value2:="31-12-2017"


ActiveSheet.PivotTables("Vacatures_sollicitaties").ManualUpdate = False
Sheets("Draaitabellen").Visible = False
Application.ScreenUpdating = True

End Sub

Legenda:
Draaitabellen: naam van de worksheet
Vacatures_sollicitaties: naam van de draaitabel
JobApplicationEvent_EventDate_: naam van het veld waarop ik wil filteren

Ik krijg steeds een Fout 1004: Eigenschap PivotFields van klasse PivotTable kan niet worden opgehaald.
Ik kan geen oplossing voor dit probleem vinden alleen andere workarounds.
(uiteindelijk wil ik nog de data waar ik op wil filteren uit een andere cel halen, maar ik kom niet langs deze initiele foutmelding)
Wie kan mij helpen?
 
Dag LDtalent,

Zonder voorbeeldbestand is het moeilijk, maar ik waag toch een poging.

Volgens mij is de regel:
Code:
PvtTbl.PvtField("JobApplicationEvent_EventDate_").PivotFilters.Add Type:=xlDateBetween, Value1:="1-1-2016", Value2:="31-12-2017"

aan te passen naar:
Code:
PvtTbl.[COLOR="#FF0000"]PivotFields[/COLOR]("JobApplicationEvent_EventDate_").PivotFilters.Add Type:=xlDateBetween, Value1:="1-1-2016", Value2:="31-12-2017"

Grtz,
MDN111.
 
Plaats svp code tussen codetags. Zeker bij vragen over Pivottabels is een voorbeeldbestand gewenst. Uit welke cellen moet de te filteren data gehaald worden? Met VBA zal het waarschijnlijk zo kunnen

Code:
Sub VenA()
  With Sheets("Draaitabellen").PivotTables("Vacatures_sollicitaties")
    .ClearAllFilters
    .PivotFields("JobApplicationEvent_EventDate_").PivotFilters.Add xlDateBetween, , "1-1-2016", "31-12-2017"
  End With
End Sub
 
Laatst bewerkt:
Sorry voor het niet juist weergeven van de code heren! Dit is mijn eerste post hier, dus bedankt voor de tip.
Hierbij een voorbeeld bestand, want jullie hulp/tips hadden niet de gehoopte werking.
Kunnen jullie me nog verder helpen?

Bekijk bijlage Voorbeeld bestand.xlsm

PS: de draaitabel is een tabel gemaakt vanuit PowerPivot, maar dat zou volgens mij niet moeten uitmaken. De filtervelden staan op de tweede tab.
 
Met het bestandje is door mij weinig aan te vangen. Je maakt blijkbaar gebruik van een rapportfilter en daar is andere code voor nodig dan hetgeen je gevonden hebt. Volgens mij bestaat daar geen 'xlDateBetween' voor en zal je dus elk item moeten bekijken.

In het voorbeeldje een draaitabel met kolomfilter en een draaitabel met een rapportfilter.

Code:
Sub VenA()
  With Sheets("Draaitabellen").PivotTables("PivotTable1").PivotFields("Datum")
    .ClearAllFilters
    .PivotFilters.Add xlDateBetween, , Format(Sheets("Management rapportage").[B1], "d-m-yyyy"), Format(Sheets("Management rapportage").[B2], "d-m-yyyy")
  End With
  
  On Error Resume Next
  With Sheets("Draaitabellen").PivotTables("PivotTable2").PivotFields("Datum")
   For Each it In .PivotItems
    it.Visible = DateValue(it) >= Sheets("Management rapportage").[B1] And DateValue(it) <= Sheets("Management rapportage").[B2]
   Next it
  End With
  
End Sub
 

Bijlagen

Hi VenA,

Je hebt gelijk, ik was blijkbaar in de war met kolom filters en rapportfilters. Ik zie de code in jouw bestand feilloos werken, maar zodra ik de rapportfilter code wil toepassen in mijn bestand, loop ik weer tegen dezelfde foutmelding aan.

"Fout 1004 tijdens uitvoering: Eigenschap PivotFields van klasse PivotTable kan niet worden opgehaald."

Kan het zijn dat de waarde die ik gebruik voor PivotFields niet werkbaar is? Daar kan ik niet echt omheen, zo staat het nu eenmaal in de bron.
Dus vertaald wordt de code zo:

Code:
  With Sheets("Draaitabellen").PivotTables("Vacatures_sollicitaties").PivotFields("JobApplicationEvent_EventDate_")
   For Each it In .PivotItems
    it.Visible = DateValue(it) >= Sheets("Management rapportage").[C4] And DateValue(it) <= Sheets("Management rapportage").[C6]
   Next it
  End With

Enig idee wat ik nog kan doen?

Bekijk bijlage Voorbeeld bestand.xlsm
 
Ik heb geen PowerPivot mogelijk dat daar de fout zit, de datums zijn geen datums, er zijn geen datums die binnen het filtercriteria vallen. Er is van alles te verzinnen. Maar zoals al geschreven is er met het voorbeeldbestand niets aan te vangen.

Neem een macro op en pas die aan zou ik denken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan