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

Draaitabellen die soms wel / soms niet volledig wordt bijgewerkt

Status
Niet open voor verdere reacties.

PaulMak

Gebruiker
Lid geworden
29 jan 2015
Berichten
95
Ik zit met een tijdrovend klus.
Elke dag update ik omzetcijfers.
Het is aannemelijk dat er vandaag een omzet bij zit van een klant bij zit die er gisteren niet bij zat.

Vervolgens haal ik een selecte groep klanten uit het overzicht

Dit proces laat ik verlopen met een macro.

Het tijdrovende zit 'm doordat ik, na verwerking, toch nog in alle tabbladen de draaitabellen moet controleren of deze alle klanten die ik wel wil hebben, heeft meegenomen.

Zou iemand eens willen kijken of er een volgorde in mijn macro niet goed staat

Ik denk nl. het volgende te doen
1. ik zet alle draaitabellen in elk tabblad op ALLE
2. ik ververs alle draaitabellen (waardoor ook alle nieuwe klanten worden toegevoegd)
3. ik deselecteer de ongewenste klanten


Code:
Sub Nieuw_Dagteller_bijwerken()
'
' Nieuw_Dagteller_bijwerken Macro
'

''  *****************************************************************************************************************************
''  Hieronder beginnen de submodules om in de draaitabellen de KG klanten eerst weer terug te halen en vervolgens weer weg te filteren
''  *****************************************************************************************************************************

    KlantnummerAanUit (True)  'Klantnummer Aan
        ActiveWorkbook.RefreshAll
    KlantnummerAanUit (False) 'Klantnummer Uit
    
''  *****************************************************************************************************************************
''  De draaitabellen zijn nu bijgewerkt en hieronder nog de laatste opdrachten en het einde van de macro
''  *****************************************************************************************************************************

    
End Sub

''  ********************************
''  Hieronder de eerste submodule
''  ********************************

Sub KlantnummerAanUit(Status As Boolean)


    Set sh = Sheets("PM")
    Set shB = Sheets("Beheerder")
    For x = 1 To 3
        sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x



    Set sh = Sheets("Omzet N-1")
    Set shB = Sheets("Beheerder")
    For x = 1 To 1
        sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x

End Sub
 
Hallo Paul,

en weer ontbreekt het (voorbeeld)bestand
 
Hi Haije, ik ging er vanuit dat programmeur in 1 oogopslag aan mijn code konden zien waar ik de schrijffout heb gemaakt in de volgorde van de functies.
Ik heb nu een testbestand waar alles lijkt te werken.
Ik vermoed nu vooral dat het fout gaat door de enorme hoeveelheid data in mijn werkelijke databron.

Inmiddels heb ik een testbestandje waar een aantal klanten uitgesloten moeten worden en dat gaat wonderwel ineens wel goed
Wanneer ik mijn oorspronkelijke lijst klanten wil uitsluiten gaat het direct al fout bij het starten van de macro.

Ik heb géén ideeën meer om te achterhalen waarom het in het echt fout gaat én nu bij het test goed

Voor de goede orde ... van alle draaitabellen die per dag moeten worden bijgewerkt zijn sommige klanten NIET meegenomen in de nieuwe omzet , Het zijn in elk geval altijd de onderste klanten die ineens niet worden meegenomen. Soms 1 klant, soms meerdere klanten en soms is iedereen meegenomen
 

Bijlagen

Zet deze line er bij op het einde van je code:
Code:
ActiveWorkbook.RefreshAll
 
ik heb grotendeels je redenering blijven volgen, maar alles wordt nu per draaitabel afgewerkt, dus eerst refresh, dan alle filters uitzetten en daarna alle ongewenste klanten onzichtbaar maken
Heeft dit het gewenste resultaat ?
Gaat het fout omdat je een onbestaande klant probeert onzichtbaar te maken ? Daarom staat die "on error" er hier in ...

Maak van je gegevens een tabel ipv. hele kolommen, op rij 154.800 staat er nog troep.
boekjaar 2020 in 2 vormen ? vermoedelijk een string en een getal ofwel met een spatie er achter ????
Code:
Sub KlantnummerAanUit()
Application.ScreenUpdating = False
   Set shb = Sheets("Beheerder")
   rij = shb.Cells(Rows.Count, "A").End(xlUp).Row
   arr = Application.Transpose(shb.Range("A1").Resize(rij))

   For Each shname In Array("Omzet N-1", "PM")   'die 2 werkbladen
      Set sh = Sheets(shname)
      For x = 1 To sh.PivotTables.Count          'alle draaitabellen in dat werkblad
         With sh.PivotTables(x)                  'een draaitabel
            .RefreshTable                        'refreshen
            .ClearAllFilters                     'alle filters verwijderen
            .PivotFields("Boekingsjaar").PivotItems("(blank)").Visible = False
                        
            With .PivotFields("Klantnummer")     'voor dat veld
               Err.Clear
               On Error Resume Next
               For i = 2 To UBound(arr)          'alle ongewenste klanten aflopen
                  .PivotItems(arr(i)).Visible = False   'niet zichtbaar
               Next i
               On Error GoTo 0
               If Err.Number > 0 Then MsgBox "mogelijks onbekende klant, die fout veroorzaakt"
            End With
         End With
      Next x
   Next shname
End Sub
 
Laatst bewerkt:
Wowww ...

Gijsbert, als ik zo kijk hoef ik alleen nog maar een extra refresh toe te voegen. Dat betekent dat ik met een hele kleine aanpassing 100% zeker dat alle gewenste klanten nu wel geselecteerd wordt na de refresh.
Hartstikke bedankt .. ik laat je weten of het in de nieuwe maand gewerkt heeft.

cow18, het klopt dat er ook een beetje troep in staat. Dat zit zo. Ik krijg de opdracht om een speciale project klant aan te maken die wij moeten leveren maar die niet in onze resultaten te zien mogen zijn.
Maar ik weet niet wanneer men de order gaat verwerken dus om te voorkomen dat die omzet toch per ongeluk wordt meegenomen in de omzet wil ik 'm alvast uitsluiten. Dat doe ik met een paar fake regels.
Die lijken op een gewone verkoopregel maar dan met een omzet van € 0,0
Zo hoef ik niet elke dag te vrezen dat de omzet te hoog is

Dat zijn de troep regels die jij ziet.

Verder ben ik onder de indruk van de zeer beknopte versie van mijn macro. Jouw versie ga ik zeker toepassen in het nieuwe jaar omdat ik mij voor de laatste weken van dit jaar geen foute rapporten kan veroorloven.

Gijsbert en cow18 ... ik dank jullie heel hartelijk voor jullie begrijpelijke oplossingen.

Nog 1 ding!!
Deze macro's gebruik ik voor verkoop orders, intake orders en portefeuille orders. Al deze rapporten bestaan uit diverse tabbladen maar ook telkens een eigen tabblad Beheerder met daarin de klanten die telkens uitgefilterd moeten worden.
Om te voorkomen dat ik bij 1 van de vele rapporten het Beheerder tabblad vergeet bij te werken zou het idealer zijn om los van de individuele rapporten 1 centraal bestand te hebben waar alle rapporten in moeten zoeken naar de klanten die ik uit wil filteren.

Stel dat ik een centraal rapport maak met de naam Bron en 1 tabblad daarin met de naam Beheerder. Hoe ziet de code er dan uit?
Dus ipv alleen Set shb = Sheets("Beheerder") svp ook de workbook naam erbij

groetjes
Paul
 
De bijlage is zonder macro's. De groene draaitabel op blad PM heeft een power query als bron.
Kun je de aangegeven verschillen met jouw draaitabel verklaren, en waarom 2020 twee keer voorkomt?
 

Bijlagen

Gijsbert1

Gijsbert1, jij adviseert om RefresAll te gebruiken aan het eind van de code.
Maar op welke plek bedoel je dan?
Na elk Tabblad of helemaal aan het eind van de macro?
 
ik heb grotendeels je redenering blijven volgen, maar alles wordt nu per draaitabel afgewerkt, dus eerst refresh, dan alle filters uitzetten en daarna alle ongewenste klanten onzichtbaar maken
Heeft dit het gewenste resultaat ?
Gaat het fout omdat je een onbestaande klant probeert onzichtbaar te maken ? Daarom staat die "on error" er hier in ...

Maak van je gegevens een tabel ipv. hele kolommen, op rij 154.800 staat er nog troep.
boekjaar 2020 in 2 vormen ? vermoedelijk een string en een getal ofwel met een spatie er achter ????
Code:
Sub KlantnummerAanUit()
Application.ScreenUpdating = False
   Set shb = Sheets("Beheerder")
   rij = shb.Cells(Rows.Count, "A").End(xlUp).Row
   arr = Application.Transpose(shb.Range("A1").Resize(rij))

   For Each shname In Array("Omzet N-1", "PM")   'die 2 werkbladen
      Set sh = Sheets(shname)
      For x = 1 To sh.PivotTables.Count          'alle draaitabellen in dat werkblad
         With sh.PivotTables(x)                  'een draaitabel
            .RefreshTable                        'refreshen
            .ClearAllFilters                     'alle filters verwijderen
            .PivotFields("Boekingsjaar").PivotItems("(blank)").Visible = False
                        
            With .PivotFields("Klantnummer")     'voor dat veld
               Err.Clear
               On Error Resume Next
               For i = 2 To UBound(arr)          'alle ongewenste klanten aflopen
                  .PivotItems(arr(i)).Visible = False   'niet zichtbaar
               Next i
               On Error GoTo 0
               If Err.Number > 0 Then MsgBox "mogelijks onbekende klant, die fout veroorzaakt"
            End With
         End With
      Next x
   Next shname
End Sub
 
Ik begrijp niet waarom je 3 draaitabellen nodig hebt op dezelfde gegevens.

Zo kan het ook:

Code:
Sub M_snb()
  Application.ScreenUpdating = False
  ThisWorkbook.RefreshAll
  
  sn = Blad2.UsedRange
  For Each sh In Sheets(Array("Omzet N-1", "PM"))
     For Each pt In sh.PivotTables
         pt.ClearAllFilters
         With pt.PivotFields("Klantnummer")
           For j = 2 To UBound(sn)
             .PivotItems(sn(j, 1)).Visible = False
           Next
         End With
      Next
   Next
End Sub
 
Hi snb, in mijn originele rapportages heb ik heel veel draaitabellen met meerdere filters en uiteraard met andere data.
Nu lijkt het inderdaad exact hetzelfde maar dat was om een voorbeeld mee te sturen, een super uitgeklede versie dus.

In mijn voorbeeld bestand zit helaas, achteraf gezien, ook maar 1 filter. Dat is inderdaad de filter waar het om gaat maar er staan in mijn origineel meerder filters en dié moeten NIET verwijderd worden.
 
is #9 een nieuwe vraag of een nieuwe oproep tot iets ?
Waar strandt het schip nu ?
 
Je lost het probleem nu aan de voorkant op. Excel heeft veel meer mogelijkheden om het probleem aan de achterkant op te lossen: voed de draaitabel met de gegevens die in die rapportage nodig zijn. Dan heb je geen ingewikkelde macro's meer nodig.
 
Sorry voor #9. Ik wilde je een vraag stellen maar blijkbaar heeft hij het complete antwoord van jou opnieuw weergegeven. Mijn onkunde ... excuus daarvoor :confused:

De vraag die ik wilde stellen ging over het volgende:
in mijn voorbeeld staat alleen klantnummer in de filter. Maar in mijn originele rapporten staan meerdere filters zoals boekingsjaar bijvoorbeeld
Jij schrijft ClearAllFilters maar die overige filters mogen NIET worden gewist!
Kan ik dat oplossen met:
Code:
[B].PivotFields("Klantnummer").ClearFilter[/B]
?
 
Je lost het probleem nu aan de voorkant op. Excel heeft veel meer mogelijkheden om het probleem aan de achterkant op te lossen: voed de draaitabel met de gegevens die in die rapportage nodig zijn. Dan heb je geen ingewikkelde macro's meer nodig.

Frans, ik heb een lading aan verkoopregels. Ingevoerd vanuit 1 ERP systeem maar bedoeld voor 2 bedrijven.
Voor het bedrijf waar ik de meeste en dagelijkse regels voor nodig heb, moet ik een groep klanten weg filteren.

Echter, wij maken ook marktrapporten waar ik de verkoop van goederen van beide bedrijven nodig heb.

Ik wil voorkomen dat ik met 2 bestanden werk en ergens de fout inga.
Daarom filter ik met een macro de ongewenste klantregels uit de meeste van mijn rapporten .

Verder heb je natuurlijk gelijk en is het idealer om aan de voorkant alleen dié gegevens te gebruiken die je nodig hebt. Helaas is dat voor mij geen optie.

Tnx voor het meedenken natuurlijk !!
 
Je kunt de macro in #10 toch beperken tot het werkblad en de enige draaitabel die in dit kader relevant is ?

Code:
Sub M_snb()
  Application.ScreenUpdating = False
  sn = Blad2.UsedRange
  
  With Blad4.PivotTables("Draaitabel1").PivotFields("Klantnummer")
      .Parent.RefreshTable
      .ClearAllFilters
      For j = 2 To UBound(sn)
         .PivotItems(sn(j, 1)).Visible = False
       Next
       .PivotItems("(blank)").Visible = False
   End With
End Sub
 
Laatst bewerkt:
2 methodes,
-pixcel indachtig, een extra kolom E bij je gegevens, met een formule zodat 1=ongewenst en 0=gewenst
in je 1e draaitabel in het page--gedeelte, daar filter je nu op die "ongewenst" op waarde 0, dan zou eigenlijk die klantnummer nu weg mogen.
Tenzij Pixcel natuurlijk nog een ander idee daarover had ...

- clearallfilter is nu uitgeschakeld, maar dan moet je nu alle pivotitems aflopen, duurt eventjes.
Hadden ze dezelfde cache gehad, dan had het ook gekund in 1 loop, maar daar is het nu te laat voor.
Code:
Sub KlantnummerAanUit()
Application.ScreenUpdating = False
   Set shb = Sheets("Beheerder")
   rij = shb.Cells(Rows.Count, "A").End(xlUp).Row
   arr = Application.Transpose(shb.Range("A1").Resize(rij))

   For Each shname In Array("Omzet N-1", "PM")   'die 2 werkbladen
      Set sh = Sheets(shname)
      For x = 1 To sh.PivotTables.Count          'alle draaitabellen in dat werkblad
         With sh.PivotTables(x)                  'een draaitabel
            .RefreshTable                        'refreshen
          [COLOR="#FF0000"]  '.ClearAllFilters                     'niet meer alle filters verwijderen[/COLOR]
            .PivotFields("Boekingsjaar").PivotItems("(blank)").Visible = False
                        
            With .PivotFields("Klantnummer")     'voor dat veld
               Err.Clear
               On Error Resume Next
              [COLOR="#FF0000"] For i = 1 To .PivotItems.Count          'alle ongewenste klanten aflopen
                  .PivotItems(i).Visible = Not IsNumeric(Application.Match(.PivotItems(i).Name, arr, 0)) 'niet zichtbaar
               Next i[/COLOR]
               On Error GoTo 0
               If Err.Number > 0 Then MsgBox "mogelijks onbekende klant, die fout veroorzaakt"
            End With
         End With
      Next x
   Next shname
End Sub
 
Laatst bewerkt:
Het is gelukt !!! Uiteindelijk is de oplossing die Frans (lees:Pixel) aandroeg en door Cow18 nog extra verduidelijkt werd de beste oplossing voor mij geworden.
Ik heb inderdaad in mijn bron een extra veld gecreëerd, "IDNL/KG". Wanneer een klant in de lijst van uitfilteren voorkomt krijgt deze klant de waarde "KG" en anders "IDNL"
Vervolgens hoef ik bij het dagelijks bijwerken van verkoopregels alleen nog maar de draaitabellen op "(All)" te zetten, Refreshen en alle draaitabellen weer op "IDNL" te zetten.

Pure winst als je bedenkt dat de bewerkingstijd van zo'n 15:00 minuten gereduceerd is naar 2:48minuten !!!
Pure winst als je bedenkt dat de betrouwbaarheid controle door het nalopen van elke draaitabel gereduceerd is naar 0
Pure winst als je bedenkt dat de betrouwbaarheid van onzeker naar 100% is gestegen !!!

Ik dank iedereen die mij geholpen hebben met mijn gecompliceerde loop oplossing en
ik dank Pixel/ Frans en Cow8 door mij aan te sturen op een nieuwe methode

Dit was de oude code
Code:
Sub Nieuw_Dagteller_bijwerken()
'
' Nieuw_Dagteller_bijwerken Macro
'

  Range("C9:AZ9").Copy
    Range("C8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C25:AZ25").Copy
    Range("C24").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C41:AZ41").Copy
    Range("C40").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C55:AZ55").Copy
    Range("C54").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C101:AZ101").Copy
    Range("C100").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C135:AZ135").Copy
    Range("C134").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C145:AZ145").Copy
    Range("C144").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C157:AZ157").Copy
    Range("C156").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C166:AZ166").Copy
    Range("C165").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C172:AZ172").Copy
    Range("C171").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False



''  *****************************************************************************************************************************
''  Hieronder beginnen de submodules om in de draaitabellen de KG klanten eerst weer terug te halen en vervolgens weer weg te filteren
''  *****************************************************************************************************************************

''        ActiveWorkbook.RefreshAll
    KlantnummerAanUit (True)  'Klantnummer Aan
        ActiveWorkbook.RefreshAll
    KlantnummerAanUit (False) 'Klantnummer Uit
 
        
''  *****************************************************************************************************************************
''  De draaitabellen zijn nu bijgewerkt en hieronder nog de laatste opdrachten en het einde van de macro
''  *****************************************************************************************************************************
    
       Sheets("Dagteller YTD").Select

    Range("C4").Value = Range("C4").Value + 1
    Range("C5:P5").Select
        
    Range("B5").Select
    ActiveCell = (Now)
 
    
End Sub

''  ********************************
''  Hieronder de eerste submodule
''  ********************************

Sub KlantnummerAanUit(Status As Boolean)


    Set sh = Sheets("PM")
    Set shB = Sheets("Beheerder")
    For x = 1 To 3
        sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x



    Set sh = Sheets("Omzet N-1")
    Set shB = Sheets("Beheerder")
    For x = 1 To 1
        sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x
    

    Set sh1 = Sheets("Omzet N")
    Set shB = Sheets("Beheerder")
    For x = 1 To 1
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x
    

    Set sh1 = Sheets("BW N-1")
    Set shB = Sheets("Beheerder")
    For x = 1 To 1
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x

    Set sh1 = Sheets("BW N")
    Set shB = Sheets("Beheerder")
    For x = 1 To 1
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x

    Set sh1 = Sheets("Portefeuille")
    Set shB = Sheets("Beheerder")
    For x = 1 To 4
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x

    Set sh1 = Sheets("Portefeuille BW")
    Set shB = Sheets("Beheerder")
    For x = 1 To 4
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x

    Set sh1 = Sheets("Port. N")
    Set shB = Sheets("Beheerder")
    For x = 1 To 4
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x

    Set sh1 = Sheets("Port. N BW")
    Set shB = Sheets("Beheerder")
    For x = 1 To 4
        sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer").CurrentPage = "(All)"
        With sh1.PivotTables("Draaitabel" & x).PivotFields("Klantnummer")
            For i = 2 To shB.Cells(shB.Rows.Count, "A").End(xlUp).Row
                .PivotItems(shB.Cells(i, 1).Value).Visible = Status
            Next i
            i = 0
        End With
    Next x
    
''    ActiveWorkbook.RefreshAll
    
    
End Sub

En dit is de nieuwe :D
Code:
Sub Nieuw2_Dagteller_bijwerken()
'
' Nieuw2_Dagteller_bijwerken Macro
'

  Range("C9:AZ9").Copy
    Range("C8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C25:AZ25").Copy
    Range("C24").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C41:AZ41").Copy
    Range("C40").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C55:AZ55").Copy
    Range("C54").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C101:AZ101").Copy
    Range("C100").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C135:AZ135").Copy
    Range("C134").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C145:AZ145").Copy
    Range("C144").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C157:AZ157").Copy
    Range("C156").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C166:AZ166").Copy
    Range("C165").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
    Range("C172:AZ172").Copy
    Range("C171").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False


''******** Draaitabellen bijwerken *************************

    Sheets("PM").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"

    Sheets("Omzet N-1").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"

    Sheets("Omzet N").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"

    Sheets("BW N-1").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"

    Sheets("BW N").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"

    Sheets("Portefeuille").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"

    Sheets("Portefeuille BW").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        
    Sheets("Port. N").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        
    Sheets("Port. N BW").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "(All)"
        
        
    ActiveWorkbook.RefreshAll
    
    
    Sheets("PM").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"

    Sheets("Omzet N-1").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"

    Sheets("Omzet N").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"

    Sheets("BW N-1").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"

    Sheets("BW N").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"

    Sheets("Portefeuille").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"

    Sheets("Portefeuille BW").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        
    Sheets("Port. N").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        
    Sheets("Port. N BW").Select
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel1").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel2").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel3").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").ClearAllFilters
        ActiveSheet.PivotTables("Draaitabel4").PivotFields("IDNL/KG").CurrentPage = _
        "IDNL"
    
'' Bijwerken afgerond *****************

    Sheets("Dagteller YTD").Select

        Range("C4").Value = Range("C4").Value + 1
        Range("C5:P5").Select
        
        Range("B5").Select
        ActiveCell = (Now)


    
'
End Sub
 
oei, oei, daar staat nog een hele hoop troep in de nieuwe, die er vermoedelijk in 2 loops kunnen vervangen worden.
Bovendien, ik zou het moeten proberen, maar als alle pivottables op dezelfde cache werken, dan gaat het nog sneller/eenvoudiger.
Kan je anders een voorbeeldfile hier neerzetten ?
 
En nu nog 2 lussen.
De eerste:

Code:
Sub M_snb()
  for j=1 to 10
    n=choose(j,8,24,40,54,100,134,144,156,165,171)
    cells(n,3).resize(,49).value = cells(n+1,3).resize(49).value
  next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan