HERBERS Excel-Forum - das Archiv

Thema: Pivot .. aktualisieren mit Makro

Pivot .. aktualisieren mit Makro
Mike

Guten Morgen zusammen,

ich habe in einer Datei viele Kundendaten, die monatlich ein Update erhalten. Nun wäre es praktisch, wenn nach der Eingabe des aktuellen Monats in Zelle D2 (bei -- alle --) mit einem Makro die einzelnen Kundenpivots (bei -- 1000 --, -- 1200 -- etc. .. später kommen noch weitere dazu) auch auf den neuen Monat aktualisiert werden könnten.

Das Tüpfelchen auf dem i wäre es, wenn mit einem zweiten Makro alle Monate aktualisiert wären.

https://www.herber.de/bbs/user/169157.xls

Herzlichen Dank für Eure Hilfe,

LG,
Mike
AW: Pivot .. aktualisieren mit Makro
schauan
Hallöchen,

den Code zum Aktualisieren kann man mit dem Makrorekorder aufzeichnen :-)
AW: Pivot .. aktualisieren mit Makro
Mike

Lieber schauan,

danke für Deine Nachricht. Ich versuche möglichst alles mit dem Makrorekorder zu erledigen, doch hier bin ich leider gescheitert. Speziell auch, weil ja nicht nur ein Blatt ein Update benötigt, sondern eben alle folgenden.

LG
Mike
AW: Pivot .. aktualisieren mit Makro
schauan
Hallöchen,

also, Excel erzeugt mir das für eine einzelne und alle ... :

Sub Makro1()

'
' Makro1 Makro
'

'
ActiveSheet.PivotTables("PivotTable3").PivotCache.Refresh
ActiveWorkbook.RefreshAll
End Sub

AW: Pivot .. aktualisieren mit Makro
Mike

Lieber schauan,

das sind zwei super Aktualisierungsroutinen, doch wird (noch) nicht der Wert in Zelle D2 abgefragt, um die Pivots eben auf den richtigen Monat einzustellen,

LG,
Mike
AW: Pivot .. aktualisieren mit Makro
schauan
Hallöchen,
Eine Frage zum Verständnis - ich hatte ja vermutet, dass Du aktualisieren willst - oder willst Du anhand D2 den Filter setzen?
Eventuell geht das auch einfach mit einem Datenschnitt.
Wenn Du auf eine Eingabe reagieren willst, gibt's das Change - Ereignis.
Zum Programmieren wäre auch die Kenntnis der Pivots und Blätter nicht ganz ohne. Zeig doch mal die Datei...
AW: Pivot .. aktualisieren mit Makro
Mike

Hallo schauan,

die Datei ist im ersten Beitrag hochgeladen / verlinkt. Es geht nicht um eine Sofort-ReagierAktion sondern:

' - bei -- alle -- D2 den neuen Monat angeben, von 2 auf 3
' - Makro "Monat" ausführen (Aktualisierung aller Pivots aufgrund Wert D2)

später möglich
' - Makro "alle" ausführen (Aktualisierung aller Pivots, alle Monate sind gewählt)

LG,
Mike
AW: Pivot .. aktualisieren mit Makro
schauan
Schaue ich mir heute Nachmittag an, bin derzeit nur am Handy...
AW: Pivot .. aktualisieren mit Makro
schauan
Hallöchen,

hier mal der Code für alle.

Sub PivotEinstellen()

'Variablen
Dim objPt As PivotTable, objWs As Worksheet
'Adresse der Monatseingabe
Const strFiAddr As String = "D2"
'Schleife ueber alle Bkaetter
For Each objWs In ActiveWorkbook.Worksheets
'Schleife ueber alle Pivots des Blattes
For Each objPt In objWs.PivotTables
'mit der Pivot
With objPt.PivotFields("Monat")
'Filter Monat loeschen
.ClearAllFilters
'Filter anhand Zelleintrag sezen
.CurrentPage = objWs.Range(strFiAddr).Value
'Ende mit der Pivot
End With
'Ende Schleife ueber alle Pivots des Blattes
Next
'Ende Schleife ueber alle Bkaetter
Next
End Sub


Für eine einzelne Tabelle bin ich zu ANfang wieder beim Aufzeichnen:

Sub Makro1()

'
' Makro1 Makro
'

'
ActiveSheet.PivotTables("PivotTable2").PivotFields("Monat").ClearAllFilters
ActiveSheet.PivotTables("PivotTable2").PivotFields("Monat").CurrentPage = "2"
End Sub


Die "2" müsstest Du dann durch den Bereich ersetzen und in diesem Makro den Namen der Pivot anpassen.
Wenn Du das für das Blatt "alle" machst, dann ist das sicher die einfachste Variante.

Man kann die Makros per Button starten oder durch das Worksheet_Change auslösen - was wäre Dir lieber?

AW: Pivot .. aktualisieren mit Makro
Mike

Hallo schauan,

danke für den -- alle -- Code. Pro Blatt hat es jeweils nur eine Pivot.

Die Lösung über Button ist ideal. So wäre es schön, wenn er gleich auf allen Detailblätter ( -- 1000, -- 1200 ..) der Arbeitsmappe die Pivots gemäss gewähltem Monat aktualisieren würde. Aber ich kann schlussendlich auch alle Detailblätter in der Routine ergänzen,

LG
Mike
AW: Pivot .. aktualisieren mit Makro
Mike

.. gibt es "nur" die Möglichkeit mit manuellen Einträgen pro Detail-Seite im Makro das Update durchzufühen?
Oder könnte man generell sagen, alle Pivots in der Arbeitsmappe werden auf den neuen Monat gestellt?

LG
Mike
AW: Pivot .. aktualisieren mit Makro
schauan
Hallöchen,

also, Du meinst, dass mein erstes Makro mit dem Monatseintrag vom Blatt "alle" alle Pivots ändert?

Dort im Code hast Du die Zeile
.CurrentPage = objWs.Range(strFiAddr).Value

objWs ist das Blatt, wo die Aktualisierung stattfindet. Wenn Du den Wert aus dem Blatt "alle" für alle willst, dann so:
.CurrentPage = Sheets("alle").Range(strFiAddr).Value

... wobei man den "Monatswert" auch einmal vor der Schleife holen und dann verwenden kann ...