Problèmes avec Code sur Tableau Croisé

Bonjour,

J'ai fait un code pour un tableau croisé dynamique.

Mais j'ai au minimum 2 soucis :

Par ailleurs, la plage sera toujours en A:B, mais en revanche le nombre de ligne sera variable aussi bien 3 lignes que 1000 lignes et là je bute pour mettre la plage à la dimension jusqu'à la dernière ligne non vide.

J'ai pour la colonne date pas le bon Format car la somme fait n'est pas bonne.

MERCI

7tcd-global.xlsm (22.46 Ko)

Bonjour,

Les données on été mises sous forme de tableau (dynamique).

Cdlt.

7tcd-global.xlsm (27.18 Ko)
Option Explicit

Public Sub Create_PT()
Dim rngPT As Range
Dim PTCache As PivotCache
Dim PT As PivotTable

    Set rngPT = ActiveSheet.ListObjects(1).Range

    On Error Resume Next
    ActiveSheet.PivotTables(1).TableRange2.Clear
    On Error GoTo 0

    Set PTCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngPT)
    Set PT = PTCache.CreatePivotTable(ActiveSheet.Cells(2, 4), "PT_1")
    With PT
        .ManualUpdate = True
        .AddFields RowFields:="Types"
        With .PivotFields("Durée")
            .Orientation = xlDataField
            .Position = 1
            .Function = xlCount
            .NumberFormat = "#,##0"
            .Caption = "NB Durée"
        End With
        With .PivotFields("Durée")
            .Orientation = xlDataField
            .Position = 2
            .Function = xlSum
            .NumberFormat = "[hh]:mm:ss;@"
            .Caption = ChrW(931) & " Durée"
        End With
        .RowAxisLayout xlTabularRow
        .TableStyle2 = "PivotStyleMedium2"
        .DisplayFieldCaptions = False
        .ManualUpdate = False
    End With

    Set rngPT = Nothing: Set PT = Nothing: Set PTCache = Nothing

End Sub

Bonjour,

J'ai un soucis avec le code que tu m'as fourni à ce niveau sur le fichier de la maquette lorsque je le colle à mon fichier :

  Set rngPT = ActiveSheet.ListObjects(1).Range

Je joins en pièce jointe le vrai fichier,et non plus la maquette.

La macro doit exécuter sur la Feuille "Synthèse 1"

J'ai affecté la macro à un bouton de control "Création TCD Global"

Par ailleurs une question comment faire pour imprimer et uniquement ce TCD dont la dimension est variable.

MERCI

@++

Re

Modifie ainsi :

Set rngPT = ActiveSheet.Cells(1).CurrentRegion

J'avais bien écrit que les données avaient été mises sous forme de tableau.

Pour l'impression, essaie ceci :

Public Sub Print_PT()
Dim pt As PivotTable
    With ActiveSheet
        Set pt = .PivotTables(1)
        .PageSetup.PrintArea = pt.TableRange1.Address
        .PrintOut preview:=True
    End With
End Sub

Bonsoi,

la modification du code a fonctionné et me permet effectivement de faire le TCD.

En revanche pour l'impression, la macro ne plante pas mais j'arrive sur la page d'aperçu avant impression, sans l'impression.

Mais c'est peut-être ce que tu souhaitais faire ?

Encore MERCI ! ! ! ! ! !

Re,

Supprime preview:=true

Bonsoir,

Ok, ça fonctionne.

MERCI

@+++

Re,

Pense à clore le sujet.

Cdlt.

Rechercher des sujets similaires à "problemes code tableau croise"