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.
@++++