A modifier TCD fait avec enregistreur pour être + fonctionel

Bonjour,

Pour comprendre mon besoin voici le fichier :

https://www.cjoint.com/c/EGFhJXBPuLG

J'ai fait un TCD avec enregistreur macro.

Oui mais voilà, il y a certaine chose qui ne fonctionne mal ou pas.

des besoins qui ne sont réalisés.

1) - je souhaiterais que la plage du TCD s'ajuste automatiquement en fonction du tableau de données A1 : Hn

NB : il est possible que la colonne H (et uniquement celle-ci possède des cellules vides !

2) - je souhaiterais une mise à jour automatique du TCD dés lors que l'on sélectionne la feuille TCD.

3) - Sur mon enregistrement automatique de la macro lors de la création du TCD j'ai mis en "Etiquettes lignes"

1) - Nom

2) - qualité d'intervention

Lorsque je refait "tourner" la macro, je perds en étiquettes de ligne, et en second critères "qualité d'intervention"

MERCI pour votre aide

@+++

Bonjour,

Le premier module crée le TCD (si besoin)

Le second actualise le TCD à l'activation de sa feuille.

* pour Excel 2010 (pour des versions antérieures, remplacer 4 par 3, dans ptCache et pt)

A te relire.

Cdlt.

Option Explicit
Option Private Module
Public Sub CreatePT()
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim lo As ListObject
Dim ptCache As PivotCache
Dim pt As PivotTable
Dim pf As PivotField

    Application.ScreenUpdating = False

    Set wb = ActiveWorkbook
    With wb
        Set wsData = .Worksheets("BdD")
        Set wsPT = .Worksheets("TCD")
    End With

    With wsData
        Set lo = .ListObjects(1)
        Set ptCache = wb.PivotCaches.Create(xlDatabase, lo.Range, 4)
    End With

    With wsPT
        On Error Resume Next
        .PivotTables(1).TableRange2.Clear
        On Error GoTo 0
        Set pt = ptCache.CreatePivotTable(.Cells(1), "PT_1", , 4)
        With pt
            .ManualUpdate = True
            .AddFields RowFields:=Array("Nom", "Rémunération")
            With .PivotFields("Qualité intervention")
                .Orientation = xlDataField
                .Function = xlCount
                .Position = 1
                .NumberFormat = "#,##0"
                .Caption = "NB Interventions"
            End With
            With .PivotFields("Rémunération")
                .Orientation = xlDataField
                .Function = xlSum
                .Position = 2
                .NumberFormat = "#,##0.00"
                .Caption = ChrW(931) & " Rémunération"
            End With
            .RowAxisLayout xlTabular
            .TableStyle2 = "PivotStyleMedium5"
            .ManualUpdate = False
        End With
        .Activate
        .[A1].Select
    End With

    ActiveWorkbook.ShowPivotTableFieldList = False

    Set pt = Nothing
    Set ptCache = Nothing
    Set lo = Nothing
    Set wsPT = Nothing: Set wsData = Nothing
    Set wb = Nothing

End Sub
Option Explicit
Private Sub Worksheet_Activate()
    Me.PivotTables(1).PivotCache.Refresh
End Sub

Bonjour,

Cela me conviendrait très certainement mais le problème c'est que ma feuille "BdD" est alimenté par une feuille "Saisie" automatiquement en incrémentant chaque saisie sur une ligne en +1.

et sur ta propo la feuille "BdD", tu as été modifié la dispo de cette feuille et donc cela ne peux pas fonctionner.

Peut-être passé de la feuille "BdD" en une feuille "BdD Bis" qui elle alimenterait le TCD avec ton code.

Le plus simple je te confie le fichier.

https://www.cjoint.com/c/EGFnm2l2ETl

Encore MERCI pour ta contribution.

@+++

Bonjour,

A tester dans son ensemble.

A te relire.

Cdlt.

Bonjour,

Avec un peu de retard, et aprés quelques petits ajustement, cela fonctionne !

MERCI pour ton aide.

@++++

Rechercher des sujets similaires à "modifier tcd fait enregistreur etre fonctionel"