XL 2013 problème référence dynamique TCD

jmten92

XLDnaute Nouveau
Bonjour,

Je ne trouve pas de solution à un problème sur les TCD....si une âme charitable pouvait m'aiguiller...:)
donc j'ai une base de données qui s'appelle ici Tableau 1 (défini automatiquement par EXCEL) et je crée un TCD sur une nouvelle feuille a partir des données de la base de données.
Sauf que je ne veux pas que la référence soit Tableau 1 car il ne sera pas forcément appelé ainsi par Excel.. Il faudrait idéalement que je puisse appeler la feuille BDD via son nom dans le code et qu'il me prenne le tableau qui sera sur cette feuille (qui peut être de taille variable)...il faut je pense utiliser une variable mais je ne sais pas faire ..
j'ai surligné en rouge dans le code les passages en question...

Si quelqu'un pouvait m'aiguiller ...

Merci par avance et bon weekend .

Sub Macro3()
'
' Macro3 Macro
'

'
Range("Tableau1").Select
Range("L13").Activate
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Tableau1", Version:=6).CreatePivotTable TableDestination:="", _
TableName:="Tableau croisé dynamique9", DefaultVersion:=6
ActiveSheet.Select
ActiveSheet.Name = "TCD RETARD RUSSIE"
Cells(3, 1).Select


With ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields("XXX")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique9").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique9").PivotFields("Colonne1"), _
"Nombre de Colonne1", xlCount
ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields( _
"Nombre de Colonne1").Function = xlSum
End Sub
 

Pièces jointes

  • Nouveau Feuille de calcul Microsoft Excel.xlsm
    15.2 KB · Affichages: 53

chris

XLDnaute Barbatruc
Bonjour
  1. Il est toujours préférable de nommer les tableaux plutôt que de conserver le nom automatique (tu nommes bien tes onglets ...)
  2. On peut vider un tableau (supprimer les lignes) et le remplir sans recréer le TCD qui s'adaptera au nouveau contenu
  3. Quelle version d'Excel utilises-tu ? Version 6 doit dater de ma grand mère ... Sur 2010 c'est 14
  4. Il serait bien de nommer également ton TCD avec un nom personnalisé...
Code néanmoins corrigé en l'état...
Code:
    Sheets.Add
    ActiveSheet.Name = "TCD RETARD RUSSIE"
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Worksheets("BDD").ListObjects(1), Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:=ActiveSheet.Cells(3, 1), TableName:="Tableau croisé dynamique9", _
        DefaultVersion:=xlPivotTableVersion14


    With ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields("XXX")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique9").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique9").PivotFields("Colonne1"), _
        "Nombre de Colonne1", xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields( _
        "Nombre de Colonne1").Function = xlSum
 

jmten92

XLDnaute Nouveau
Bonsoir,

Je te remercie pour ta réponse. J'utilise excel 2016 et j'ai bien noté pour renommer les tableaux et tcd . j'ai appliqué ton code pour mon cas et il fonctionne bien mais bloque juste avant la fin . Saurais tu pourquoi ? La list object que tu as utilisé sélectionne bien le tableau mais que mettre sur les parties que j'ai souligné en rouge ? Sachant que les "1" c'est moi qui les ai rajouté pour avoir la même chose que ce que tu avais fait toi (souligné en bleu) mais cela ne marche pas. Ai-je loupé une étape ?

Merci par avance :)

Sheets.Add
ActiveSheet.Name = "TCD RETARD RUSSIE"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Worksheets("BDD RUSSIE").ListObjects(1), Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:=ActiveSheet.Cells(3, 1), TableName:="Tableau croisé dynamique3", _
DefaultVersion:=xlPivotTableVersion14

With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Exercice")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Publication")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Branche" _
)
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"zone geo")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Entité_Code")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Entité_Libellé")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Rating")
.Orientation = xlRowField
.Position = 3
End With
ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique3").PivotFields("NbJoursRetard"), _
"Somme de NbJoursRetard", xlSum
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Phase")
.Orientation = xlColumnField
.Position = 1
End With
Range("B16").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique3")
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
Columns("A:A").ColumnWidth = 22.71
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Publication") _
.CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Publication")
.PivotItems("Exempté").Visible = False
.PivotItems("Publié").Visible = False
End With
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Publication") _
.EnableMultiplePageItems = True
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Branche"). _
CurrentPage = "(All)"
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Branche"). _
EnableMultiplePageItems = True
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("zone geo"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"zone geo")
End With
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("zone geo"). _
EnableMultiplePageItems = True
Sheets("BDD RUSSIE").Select
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.ListObjects("1").Range.AutoFilter Field:=7, Criteria1 _
:=Array("AAMO", "ALD", "ASSU", "EUROPE", "SGEF"), Operator:=xlFilterValues
ActiveSheet.ListObjects("1").Select
Range("F15").Activate
Selection.EntireRow.Delete
ActiveSheet.ListObjects("1").Range.AutoFilter Field:=7
Sheets("TCD RETARD RUSSIE").Select
Range("C9").Select
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 939
Membres
101 844
dernier inscrit
pktla