Pivot e dati dinamici



  • Pivot e dati dinamici
    di Legatoalfuturo (utente non iscritto) data: 28/07/2010

    Ciao ragazzi,
    stavolta sto davvero fronteggiando un problema che non mi da pace. non riesco a trovare alcuna soluzione. vi spiego.
    ho creato su un foglio (foglio2) una tabella con 8 colonne, le quali accolgono rispettivamente i dati di costo di alcuni progetti.
    le colonne sono societa', localita', regione, voce di costo, importo, pagato, scaduto.
    ecco una volta inseriti tutti i dati, compreso l'importo, in tutte le celle della colonna importo ho impostato una formattazione condizionale che cambia il colore della cella e del testo a seconda che ci sia una x sulla cella della colonna pagato o su quella dello scaduto (ho impostato un criterio di convalida su queste due colonne,tramite "elenco").
    dunque, questa tabella è una tabella dinamica che ogni giorno aumenta come numero di righe.
    l'esigenza è quella di creare una tabella pivot, che accolga tutte le colonne escluse quelle del pagato e scaduto, e vorrei anche fare in modo, magari tramite una macro associata ad un pulsante, che ogni volta che vengano aggiunte nuove righe la tabella pivot si aggiorni automaticamente.

    i problemi grossi per me a questo punto sono due:
    1) non riesco a imposare nel codice vba la selezione di un intervallo dinamico, riferito alla tabella che ogni volta ha un numero di righe crescente.
    2) vorrei che la tabella pivot, una volta creata, accogliesse i campi della colonna importo mantenendo la formattazione condizionale della tabella di origine.

    vi posto di seguito il codice vba della creazione della tabella pivot che ho fatto col registratore macro....come vedrete dal codice, nella parte iniziale ho cercato di impostare la selezione dinamica dell'intervallo di origine dati, ma poi non so come dire alle istruzione di creazione della tabella pivot, che l'area di origine è quella che ho appena selezionato con quel metodo.

    vi ringrazio infinitamente per l'aiuto che vorrete darmi

    marco

     
    Sub CreaPivot()
        Worksheets("Foglio2").Select
        Dim x, y
        y = Range("B3:G3").Address
        x = Range("B3").End(xlDown).Address
        Range(y, x).Select
        Sheets.Add
        ' Nella seguente istruzione non so come impostare SourceData in modo che accolga la selezione dinamica che ho appena selezionato
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Foglio2!R3C2:R12C7", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="Foglio5!R3C1", TableName:="Tabella_pivot2", _
            DefaultVersion:=xlPivotTableVersion12
        Sheets("Foglio5").Select
        Cells(3, 1).Select
        ActiveWorkbook.ShowPivotTableFieldList = True
        With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("SOCIETA'")
            .Orientation = xlPageField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("VOCE DI COSTO")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields("MESE")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tabella_pivot2").AddDataField ActiveSheet.PivotTables( _
            "Tabella_pivot2").PivotFields("IMPORTO (€)"), "Somma di IMPORTO (€)", xlSum
        Cells.Select
        With Selection
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        With Selection.Font
            .Name = "Segoe UI"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
        End With
        Selection.Font.Size = 11
        Selection.Font.Size = 12
        Cells.EntireRow.AutoFit
        Cells.EntireColumn.AutoFit
        Selection.RowHeight = 24.75
        Range("B5:E11").Select
        With ActiveSheet.PivotTables("Tabella_pivot2").PivotFields( _
            "Somma di IMPORTO (€)")
            .NumberFormat = "€ #.##0"
        End With
        Range("A1").Select
    End Sub