• 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.

Meerdere draaitabellen bijwerken en filteren dmv 1 loop

Status
Niet open voor verdere reacties.

PaulMak

Gebruiker
Lid geworden
29 jan 2015
Berichten
95
Goedemiddag, ik zoek hulp voor slimmer alternatief tov mijn huidige werkwijze.
Ik heb diverse rapporten en daarin meerdere draaitabellen.
In deze 10-tallen draaitabellen moet ik telkens een aantal klanten uitsluiten
Dat doe ik met een macro die 1 voor 1 de draaitabellen benoemd en per draaitabel 1 voor 1 de betreffende klanten uitsluit

Code:
Sub Draaitabel_bijwerken_dmv_loop()
'
' Draaitabel_bijwerken_dmv_loop Macro
'
'***************************************************************************************
'Eerst de draaitabel weer aanvullen met alle klanten
'***************************************************************************************

Sheets("Rapport").Select
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Klant").CurrentPage _
        = "(All)"
    With ActiveSheet.PivotTables("Draaitabel1").PivotFields("Klant")
        .PivotItems("Paul").Visible = True
        .PivotItems("Piet").Visible = True
        
        End With
    
Sheets("Rapport").Select
    ActiveSheet.PivotTables("Draaitabel2").PivotFields("Klant").CurrentPage _
        = "(All)"
    With ActiveSheet.PivotTables("Draaitabel2").PivotFields("Klant")
        .PivotItems("Paul").Visible = True
        .PivotItems("Piet").Visible = True
    
    End With
    
Sheets("Rapport").Select
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Klant").CurrentPage _
        = "(All)"
    With ActiveSheet.PivotTables("Draaitabel3").PivotFields("Klant")
        .PivotItems("Paul").Visible = True
        .PivotItems("Piet").Visible = True
        
    End With
    
'*************************************************************
'Dan alle draaitabellen bijwerken
'*************************************************************


ActiveWorkbook.RefreshAll
    
    

'***************************************************************************************
'Nu Paul en Piet weer UITFILTEREN
'***************************************************************************************
Sheets("Rapport").Select
    ActiveSheet.PivotTables("Draaitabel1").PivotFields("Klant").CurrentPage _
        = "(All)"
    With ActiveSheet.PivotTables("Draaitabel1").PivotFields("Klant")
        .PivotItems("Paul").Visible = False
        .PivotItems("Piet").Visible = False
            
    End With
    
        
Sheets("Rapport").Select
    ActiveSheet.PivotTables("Draaitabel2").PivotFields("Klant").CurrentPage _
        = "(All)"
    With ActiveSheet.PivotTables("Draaitabel2").PivotFields("Klant")
        .PivotItems("Paul").Visible = False
        .PivotItems("Piet").Visible = False
        
    End With


Sheets("Rapport").Select
    ActiveSheet.PivotTables("Draaitabel3").PivotFields("Klant").CurrentPage _
        = "(All)"
    With ActiveSheet.PivotTables("Draaitabel3").PivotFields("Klant")
        .PivotItems("Paul").Visible = False
        .PivotItems("Piet").Visible = False

    End With
    
End Sub

Met de hoeveelheid draaitabellen die ik gebruik, is het een hoop werk om alle macro's bij te werken als er een nieuwe klant bij komt die uitgesloten moet worden.

De vraag:
Is het mogelijk om 'ergens' (bijvoorbeeld in 'Tabblad Beheerder' of nog beter 'een centraal minidocument' 1 lijst te maken waar alle klanten, die uitgesloten moeten worden, 1x worden benoemd
en dat vervolgens per draaitabel deze lijst wordt afgewerkt?

ps. ik hoop dat ik nu de vraag op de juiste manier gesteld heb én in de juiste vorm én met de juiste bijlage
 

Bijlagen

Vraag is prima gesteld en bijlage ook ok. :thumb:

1. Met 1 menu meerdere draaitabellen filteren, daarvoor heeft microsoft de "slicer" uitgevonden. Die zou je op de beheerderspagina kunnen zetten...
2. Er is een knop "alles bijwerken", het indrukken daarvan zou je middels een macrotje achter de knop kunnen hangen. Lijkt me een stuk simpeler dan de code hierboven.
3. Waarom 3 draaitabellen als het ook in 1 kan?
 

Bijlagen

Laatst bewerkt:
Hi AxelCel, dank je wel voor je reactie en meedenken.

Allereerst begrijp ik je oplossing in het kader van het voorbeeld dat ik heb meegestuurd. Echter de werkelijke rapportages liggen een stuk gecompliceerder. Ik heb geprobeerd om een simpele weergave te maken zodat het bestand niet te groot zou worden.

Ik heb ervaring met Slicers, Alles bijwerken en draaitabellen.
Voordat ik de moed had om deze vraag te stellen heb ik al diverse methodes uitgeprobeerd. Meestal met het gewenste resultaat en soms ook niet.

Ik zal een voorbeeld geven.

Als ik in een draaitabel diverse klanten uitsluit met de filter dan ´ziet´ de draaitabel dit niet als uitsluiten maar als een selectie van klanten die ik wel wil hebben. Hierdoor zullen later nieuwe klanten ook worden uitgesloten.
Daarom selecteer ik telkens alle klanten, werk ik mijn bestanden bij om de nieuwe orders toe te voegen, en sluit vervolgens mijn ongewenste klanten weer uit.

Ik update dagelijks meerdere rapportages. De 1 met omzet, een andere weer met intake, brutowinst, brutowinstmarges en delta´s.Omdat ik diverse rapporten heb en binnen die rapporten weer meerdere tabbladen met draaitabellen en grafieken kan ik niet met 1 beheerders tabblad uit de voeten. Het gaat om duizenden verkoopregels en ook veel te veel klanten waaruit die ik dan dagelijks een groepje klanten moet uitfilteren.

Ben ik nog te volgen :) ??

Enfin, eigenlijk wil ik ergens een rijtje met klanten vastleggen en tegen mijn macro zeggen dat een draaitabel alle uitsluitingen moet opheffen, alle nieuwe data moet verwerken en vervolgens naar mijn 'uitsluitklanten' gaat en 1 voor 1 de klanten uitsluit tot aan de cel zonder klant.

Kortom, ipv 100 draaitabellen, 10 klanten benoemen om terug te komen en vervolgens weer, in 100 draaitabellen, 10 klanten uit te sluiten
wil ik 100 draaitabellen de klanten lezen op een centrale plek.
als er een nieuwe uitsluitklant bijkomt dan wil ik graag ALLEEN de lijst bijwerken met 1 nieuwe klant en niet alle draaitabellen uitbreiden met deze ene klant. Dat scheelt mij dus 199 handelingen én ik loop niet meer de kans dat ik een draaitabel vergeet bij te werken.
 
Dat is nogal wat om over na te denken op de vroege ochtend. Ik kan er nu nog even niet naar kijken, maar alvast een vraag: is het een optie om, op basis van de 1e tabel en de lijst met uitsluitingen, een 2e tabel te maken en daarop de draaitabellen te baseren?
 
Voor in de vroege morgen is het idd nogal een zwaar ontbijtje :)

Je plan voor een 2e bestand waarin de uitgesloten klanten niet zitten heb ik ook overwogen. Dat geeft echter het probleem dat er momenten zijn dat ook alles meegeteld moet worden ... en om dat via 2 bestanden te doen is ooit een keer vragen om moeilijkheden.
Daarom wil het bronbestand als enige bestand houden en het verschil maken door wegfilteren in de draaitabellen.
En het lukt ook prima door de macro's die ik nu gebruik echter het leek mij dat het mogelijk moest zijn om ipv tegen elke draaitabel 10x te zeggen "klant A true, klant B true enz ..." en vervolgens na het refreshes weer 10x zeggen "klant A false, klant B false ....."

ik dacht zelf aan een opdracht in de vorm als;
1. draaitabel 1
2. ga naar bronbestand, tabblad beheerder, range A1 .. A100
3. Dan een loop starten
4. Als A1 <> leeg, sluit die klant dan uit in draaitabel 1uit
5. Als A2 <> leeg, sluit die klant dan uit in draaitabel 1uit
6. Als A3 <> leeg, sluit die klant dan uit in draaitabel 1uit
7. Als A4 = leeg, dan de loop stoppen en naar de volgende opdracht in de macro

Het grote voordeel van een loop functie zou hier zijn, dat ik maar 1 handeling hoeft uit te voeren bij een nieuwe klant die moet worden uitgesloten ..... de lijst van uitgesloten klanten uitbreiden met 1 klant !!
 
Helaas is mijn vraag niet opgelost op de manier die ik wenste. Ik dank AlexCel in elk geval voor de tijd die hij erin heeft gestoken.
Ik ga op dieper zoeken naar een oplossing die ik voor ogen heb.
Vooralsnog sluit ik de vraag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan