Macro che aggiorna pivot istantaneamente all'inserimento dei dati

Anonimo
2010-07-17T06:25:36+00:00

Ho una tabella dati A2:J300 nel  Foglio2 di un file

La gran parte delle righe sono vuote.

Quando immetto nuovi valori nel Foglio2 vorrei che la PIVOT collegata nel Foglio4 si aggiornasse automaticamente.

Essendo un po’ digiuno di VBA chiedo cortesemente l’operatività step by step e se non vi arreco disturbo di rendermi comprensibile didatticamente il significato delle istruzioni. Grazie a chi potrà o vorrà rispondermi.


.K

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-07-19T04:44:32+00:00

Si. L'area è predefinita e le righe vuote stanno all'interno dell'area E IN FONDO fino alla riga A300:J300 e vengono man mano riempite di valori manualmente

Quando inserisco valori nuovi vorrei che la PIVOT collegata acquisisse immediatamente l'aggiornamento (quindi evitare di usare il comando AGGIORNA).

Possiamo provare na cosa del genere, sfruttare l'evento activate del foglio dove hai la tabella pivot. Se hai già il foglio che contiene la tabella pivot: ALT+F11 e sei nell'editor del vb di Excel. Individua la finestra: Progetto-VBAProject. Nella finestra fai doppio click sul nome del foglio che contiene la tabella pivot. Nel foglio bianco(modulo) copia/incolla questo:

Private Sub Worksheet_Activate()

    'dichiaro le variabili

    Dim sh As Worksheet

    Dim s As String

    'metto un riferimento al foglio con i dati

    Set sh = ThisWorkbook.Worksheets("Foglio2")

    With sh

        'trovo il range utilizzato nel

        'foglio che contiene i dati

        s = .Range("A2").CurrentRegion.Address

        'passo il nuovo dato alla tabella pivot

        Me.PivotTables("Tabella_pivot1").ChangePivotCache ActiveWorkbook. _

        PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Foglio2!" & s _

        , Version:=xlPivotTableVersion10)

    End With

    'Set a Nothing della variabile oggetto

    Set sh = Nothing

End Sub

Il codice è commentato riga per riga. In pratica, ogni volta che attiverai il foglio con la tabella pivot, aggiornerai la proprietà DataSource della pivot(cioè il Range da cui prendere i dati). Devi eventualmente modificare il nome del foglio dove hai i dati(nell'esempio qui sopra è Foglio2) ed il nome della tua tabella pivot(nell'esempio qui sopra è Tabella_pivot1). Dove sono adesso ho solo Excel2010, ma dovrebbe essere valido anche per Excel2007. Dai un'occhiatina(se hai tempo e voglia) a CurentRegion nella guida del vb di Excel per capire come faccio a sapere quale parte della tabella del foglio con i dati è utilizzata. Dovrebbe essere abbastanza chiaro. Nel caso non lo fosse, chiedi sempre in questo thread. Grazie per l'attenzione.


Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

9 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-07-19T09:18:39+00:00

    La macro funziona egregiamente e credo , aiutandomi con la guida di aver capito il meccanismo. Ottimo CurrentRegione.

    Quando hai tempo puoi postami una soluzione agendo sul Foglio2? Solo per comparare e capire di più. Grazie mille.


    .K

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-07-19T08:20:32+00:00

    Intanto grazie mauro, anch'io ho excel 2010. Ho scritto excel 2007 pensando che fosse la stessa cosa.

    Proverò quanto da te suggerito.

    Veramente pensavo che si dovesse agire sul Foglio2 (origine dati) e non su quello della PIVOT ...

    Se ti va di suggerirmi questa opportunità ...


    .K

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-07-18T09:28:17+00:00

    Si. L'area è predefinita e le righe vuote stanno all'interno dell'area E IN FONDO fino alla riga A300:J300 e vengono man mano riempite di valori manualmente

    Quando inserisco valori nuovi vorrei che la PIVOT collegata acquisisse immediatamente l'aggiornamento (quindi evitare di usare il comando AGGIORNA).

    Ti ringrazio per l'interessamento.


    .K

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-07-18T09:02:07+00:00

    Ho una tabella dati A2:J300 nel  Foglio2 di un file

    La gran parte delle righe sono vuote.

    Quando immetto nuovi valori nel Foglio2 vorrei che la PIVOT collegata nel Foglio4 si aggiornasse automaticamente.

     

    Essendo un po’ digiuno di VBA chiedo cortesemente l’operatività step by step e se non vi arreco disturbo di rendermi comprensibile didatticamente il significato delle istruzioni. Grazie a chi potrà o vorrà rispondermi.

    Proviamo assieme. Quelle che identifichi come righe vuote, si trovano in fondo? Per essere più precisi, hai definito tu la tabella A2:J300 non sapendo a priori quante righe avrai? Grazie per l'attenzione.


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento