• 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 updaten op basis op een tijd in een cel

Status
Niet open voor verdere reacties.

Kaalbartje

Gebruiker
Lid geworden
3 jan 2020
Berichten
91
Hoi allen,

Ik ben op zoek naar een manier (zal wel VBA) worden dat alle draaitabellen ververst worden. Er draait elke 30 minuten een query die data ophaalt. Deze gegenereerd ook een tijd waarop deze ververst is. Deze komt terug op bv (B50).
De draaitabellen hoeven pas te updaten als er nieuwe data is, nadeel is dat de verversing van de data elke keer een beetje verspringt. Dit kan ik niet aanpassen. dus de tijd van de laatste verversing +2 minuten
Het liefst zou ik de draaitabellen pas willen updaten als er nieuwe data is. Anders is het zinloos.
Ik ververs nu de draaitabellen elke 15 minuten maar dat is natuurlijk een zwaardere belasting van het systeem.
Code:
Private Sub Workbook_Open()
    Application.OnTime Now() + TimeValue("0:15:00"), "Vernieuwen"
Application.ScreenUpdating = False
Dim pt As PivotTable
    Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshTable
Next pt
Next ws
End Sub
 
mits verstandig gebruik te maken van 1 van deze events zou dat moeten lukken na een update.
Hoe of waar wordt er weggeschreven ?
Code:
Private Sub Worksheet_TableUpdate(ByVal Target As TableObject)
Private Sub Worksheet_Change(ByVal Target As Range)
 
Hoi Cow18,

Ik snap niet helemaal wat je bedoelt. Dit zijn volgens mij geen volledige codes toch?
Ik heb voorbeeld bestand toegevoegd. De query's er uit gehaald en alle namen vervangen door Pietje. Normaal zou dit een individuele naam genereren maar dat maakt voor het voorbeeld niet uit.

Dus als tabblad bron ververst wordt door de query (draait nu elke 30 min) dat de twee tabbladen (detail en dashboard) ververst worden na een verversing van de Bron.
Hopelijk is het zo duidelijk.
 

Bijlagen

  • Voorbeeldverversen.xlsm
    78,5 KB · Weergaven: 14
iets moeilijker via een Class-module
https://www.excelandaccess.com/create-beforeafter-query-update-events/

iets simpeler, hopelijk geen interferentie met de query (backgroundquery) ivm refreshall, wie neemt het initiatief tot refresh ?
Als er iets verandert binnen je brongegevens, dan geef je de boel nog 5 sec en dan refresh je alle draaitabellen (en queries).
Een change-event in "Bron" en de rest in module 1.
 

Bijlagen

  • Voorbeeldverversen (2).xlsm
    79,9 KB · Weergaven: 15
Laatst bewerkt:
Hoi,

Tnx voor je snelle reactie. Ik ben je oplossing aan het testen. Ik kom er op terug.
Wie neemt het initiatief tot refresh: dat is bij het openen van het bestand en dan dus na x minuten (een uur en een beetje) na de laatste update van de bestanden. Elk uur wordt er een nieuw bestand gedumpt waar de query kijkt naar het jongste bestand in de map.

Edit: hij gaat nu elke 5 seconden alles refreshen :) Iets te veel van het goede.
 
Laatst bewerkt:
Dat vreesde ik een beetje, die refreshall moeide zich ook met de query.
Dus heb ik die vervangen door die dubbele loop, die ook al in thisworkbook stond.
Code:
Sub Refreshen()
     For Each ws In ActiveWorkbook.Worksheets
      For Each pt In ws.PivotTables
         pt.RefreshTable
      Next pt
   Next ws
   
   bWait = False                                 'vlaggetje omlaag
   Application.StatusBar = ""

End Sub
Als je nieuwe versie gedumpt is, ieder uur + x minuten, moet je dan zelf nog iets doen om die data in bron te krijgen.
Indien niet, dan zal dit vermoedelijk volstaan.
Indien wel, wat moet je zelf nog doen ?
 
Laatst bewerkt:
Ja jammer maar helaas.
Kan je de macro laten kijken naar Bron J2. Daar staat de tijd van de laatste update.
Hmmz ik zie dat ik die in Module 1 had gezet ipv ThisWorkbook
 
Laatst bewerkt:
nu wordt er enkel gekeken naar een nieuwe waarde van je J2 via een change-event en eventueel eventjes gewacht opdat de query zich netjes kan afwerken.
 

Bijlagen

  • Voorbeeldverversen (2) (1).xlsm
    78,9 KB · Weergaven: 18
Er draait elke 30 minuten een query die data ophaalt.
Is dit een Power Query? Een merge die je dumpt naar sheet Bron? En vervolgens gebruik je de Excel tabel als bron voor je draaitabel?
Dat is niet de beste werkwijze. Beter is om je draaitabel direct te voeden met de power query merge. Power query zal dan de refresh voor je uitvoeren direct na update van de bron. Geen macro's nodig. En ook geen sheet Bron.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan