XL 2016 création tableau croisé dynamique aprés filtre en VBA

manar

XLDnaute Nouveau
bonjour

je m'explique
je travaille sur user form pour la création d'un TCD , j'ai réussi à créer le tableau croisé dynamique , mais le problème c'est que j'ai des filtres avant , je saisie un intervalle de date avec textbox et j'ai des filtres dans combobox
lorsque je lance TCD , il ne prend pas en considération les filtres de date et des combobox que j'ai dans user form , il m'affiche TCD du tableau complet

je ne sais pas comment résoudre ce problème , je vous remercie par avance pour votre aide
 

manar

XLDnaute Nouveau
merci chris
mais j'arrive pas à faire l'extrait comme source , car dans mon tableau croisé dynamique j'ai comme source "tablo" c'est le nom du tableau complet , j'ai essayer à copier l'extrait et le coller dans une autre feuille mais je me suis bloqué comment je vais nommé le nouvel tableau , puisque le tableau va s'ajouter mais je vais pas connaitre son nom pour le mettre dans la source , c'est ce détail là que j'arrive pas à coder
 

chris

XLDnaute Barbatruc
RE
Dans ton code :
après collage, tu peux récupérer le nom du tableau ou le changer (Tablo2 par exemple) ce qui permettra que le TCD ait toujours la même source

Plus simple : tu crées un tableau structuré vide source du TCD et tu le vides et remplis à chaque fois par VBA.
 

manar

XLDnaute Nouveau
voilà mon code
merci d'avance

'sélectionner et copier les cellules après filtre et les coller dans une autre feuille

Range("Tablo[#All]").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste

'tableau croisé dynamique

Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "TCD" & Format(Sheets.Count - 1, "00")
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Tablo", Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:=ActiveSheet.Cells(1, 1), TableName:="TCD", _
DefaultVersion:=xlPivotTableVersion15
With ActiveSheet.PivotTables("TCD").PivotFields("SEMAC")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet. _
PivotTables("TCD").PivotFields("SEQTS"), _
"Somme de SEQTS", xlSum
With ActiveSheet.PivotTables("TCD").PivotFields( _
"Somme de SEQTS")
.Caption = " quantit?"
.NumberFormat = "# ##0,00"
End With
 

chris

XLDnaute Barbatruc
RE

Pourquoi créer un TCD par VBA ?

Comme dit plus haut :
Tu crées un tableau structuré vide et tu le nommes Tablo2
Tu crées le TCD à partir de Tablo2 et tu le nomme TCD1

Dans ton programme : pour copier la sélection de Tablo versTablo2

Nom des feuilles à adapter

VB:
   Sheets("Feuil2").Activate
    With Sheets("Feuil2").ListObjects("Tablo2")
        .DataBodyRange.Delete
        .ListColumns(1).Range.Cells(2, 1).Select
        Range("Tablo").SpecialCells(xlCellTypeVisible).Copy
        ActiveSheet.Paste
    End With
    Sheets("Feuil4").PivotTables("TCD1").PivotCache.Refresh
 

Discussions similaires