Tableau croisé dynamique sur table à plage variable

Alice 05

XLDnaute Nouveau
Bonsoir,

Je m'y prends très tard, mais j'ai un petit souci avec un TCD à plage variable.
Je souhaite permettre aux utilisateurs du fichier d'actualiser les données du tableaux de base (ajouter des lignes ou des colonnes), et d'obtenir automatiquement la modification du TCD (par un bouton MAJ si utilisation d'une macro, ou simple actualisation des données du TCD).
J'ai déjà essayé de définir une table variable. Mais quand je fais le TCD à partir de cette table, il y a un message d'erreur (problème de référence).
J'ai essayé de faire ce genre de macro, mais je ne m'y connais pas suffisamment, et ça ne marche qu'à la première exécution :


Sheets("BASE").Select
'comptage du nomdre de lignes et de colonnes du tableau
lignefin = Cells(1, 1).CurrentRegion.Rows.Count
colfin = Cells(1, 1).CurrentRegion.Columns.Count
'valeurs des variables de début de lignes et de colonnes
lignedep = 2
coldep = 1
Sheets("TAB1").Select
Columns("A:I").Select
Range("C1").Activate
Selection.Delete Shift:=xlToLeft
Range("A4").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'BASE'!R" & lignedep & "C" & coldep & ":R" & lignefin & "C" & colfin).CreatePivotTable TableDestination:="Tableau croisé dynamique2" _
, TableName:="Tableau croisé dynamique2"

Pouvez-vous m'aider svp ?

Merci beaucoup,

Alice
 

Pierrot93

XLDnaute Barbatruc
Re : Tableau croisé dynamique sur table à plage variable

Bonjour Alice,

Tu parles d'actualisation de TCD, mais à priori dans le code que tu donnes, tu supprimes le TCD pour le re-créer... enfin si j'ai bien compris...

D'autre part, tu parles de plage variable, pas de problème si tu rajoutes des lignes, par contre si tu rajoutes des colonnes, alors ce sont de nouveaux champs à prendre en compte dans dans le TCD, et ils ne le seront pas.

Regarde peut être le code ci-dessous, si cela peut t'aider, en supposant tes données sur une feuille nommée "Feuil1", données à partir de A1, ton TCD sur une feuille nommée "Feuil2" :

Code:
Sub test()
Dim maplage As Range
Set maplage = Sheets("Feuil1").Range("A1").CurrentRegion
Sheets("Feuil2").PivotTables(1).SourceData = maplage.AddressLocal(ReferenceStyle:=xlR1C1, external:=True)
End Sub

bonne journée
@+
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi