Taille Tableaux croisés dynamique

  • Initiateur de la discussion Initiateur de la discussion Hamza
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hamza

XLDnaute Nouveau
Hello Forum,

Je reviens vers vous encore une fois, j'ai réussi à faire un outil pour automatiser le traçage des tableaux croisés dynamiques, le seule soucis que j'ai c'est au niveau de la taille du tableau initiale psk ça change à chaque fois donc parfois ça marche Impec et parfois ça beugue.

le beug est juste au début:

Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"HistoDef!R1C1:R5150C22", Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Feuil1!R3C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion12
Sheets("Feuil1").Select


quand j'enregistre une Macro, j'ai pu remarqué qu'il faut juste changer "R1C1:R5150C22" c'est tout. Esk ya un moyen d'écrire un code standard pour n'importe quel Tableau?

Cordialement

Hamza
 
Re : Taille Tableaux croisés dynamique

Bonjour

range("HistoDef!R1C1").currentregion peut remplacer "HistoDef!R1C1:R5150C22"

Sinon une meilleure solution est de mettre la source sous forme de tableau et de baser le TCD sur le tableau : EXcel adaptera la surface...
 
Re : Taille Tableaux croisés dynamique

Bonjour Chris,

Merci beaucoup pour votre réponse Rapide.

J'ai essayé la solution range("HistoDef!R1C1").currentregion et ça marchait pas. Pour la deuxième solution elle parait l'idéale mais pareil la taille du tableau initiale pose problème. Ya t'il une solution "Code" standard pour tout sélectionner et insérer un tableau?

Cordialement

Hamza
 
Re : Taille Tableaux croisés dynamique

Re

Effectivement cela marche avec le mode A1
Code:
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Range("HistoDef!A1").CurrentRegion, Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:=ActiveSheet.Range("A1"), TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion12
mais je n'arrive pas à transposer en mode R1C1

Pour les tableaux
Code:
    ActiveSheet.ListObjects.Add(xlSrcRange, Cells(1, 1).CurrentRegion, , xlYes).Name = "Source"
    ActiveSheet.ListObjects("Source").TableStyle = "TableStyleLight9" ' ou autre choix

marche dans les 2 types de référencement
 
Re : Taille Tableaux croisés dynamique

Re, là je me trouve face à un autre soucis. pareil pour filtrer les données sur les étiquettes des TCD "photo jointe" je n'ai pas tout le temps l'apparition des mêmes numéros donc le code ne marche pas toujours je cherche une solution Standard pour Filtrer et Afficher que les numéros qui sont inférieurs à 300 ?


With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Défaut")
.PivotItems("75").Visible = False
.PivotItems("78").Visible = False
.PivotItems("86").Visible = False
.PivotItems("92").Visible = False
.PivotItems("94").Visible = False
.PivotItems("100").Visible = False
.PivotItems("115").Visible = False
.PivotItems("125").Visible = False


Microsoft Excel - HistoDef.png
 
Re : Taille Tableaux croisés dynamique

Re oui j'ai réussi à le faire avec le code ci-dessous, il est un peu long mais ça marche.

Cordialement

Hamza

'------------Filtre étiquette: Afficher que les défauts <300-------------
Dim ShTcd As Worksheet
Dim Pvt As PivotTable
Dim PvtItem As PivotItem

Application.ScreenUpdating = False

Set ShTcd = Sheets("Feuil1")
Set Pvt = ShTcd.PivotTables("Tableau croisé dynamique1")

With Pvt
' Effacement des anciens filtres et rafraichissement du Tcd.
.PivotFields("Défaut").ClearAllFilters
.PivotCache.Refresh

' Mise à jour du TCD.
For Each PvtItem In Pvt.PivotFields("Défaut").PivotItems
If Val(PvtItem.Caption) <= "300" Then
PvtItem.Visible = True
Else
PvtItem.Visible = False
End If
Next PvtItem

End With

Application.ScreenUpdating = True
 
Re : Taille Tableaux croisés dynamique

Re

Non tu n'utilises pas le filtre conseillé :

Code:
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Défaut"). _
        PivotFilters.Add Type:=xlCaptionIsLessThanOrEqualTo, Value1:="300"

suffit. Pas besoin de boucle.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
685
Réponses
69
Affichages
9 K
Réponses
4
Affichages
1 K
Réponses
7
Affichages
1 K
Retour