Détruire anciennes étiquettes dans TCD

p@cm@n

XLDnaute Junior
Bonjours le forum,

avant toute chose je tiens à préciser que j'ai essayer une méthode proposer dans les WIKI page 9 de MichelXld et dont l'auteur de la macro est Debra Dalgleish.

Détruire les anciennes étiquettes dans un TCD


Suite à des modifications des étiquettes dans la base de données, le TCD ne s'actualise pas et les étiquettes de colonne persistent dans les filtres des champs.
Pour les supprimer , utilisez cette macro de Debra Dalgleish ,à placer dans un module de la feuille


Sub deleteOldItemsWB()
'gets rid of unused items in pivotTable
'Debra Dalgleish - based on MSKB (202232)
Dim ws As Worksheet
Dim pt As pivotTable
Dim pf As pivotField
Dim pi As pivotItem
Dim i As Integer
On Error Resume Next
For Each ws In activeWorkbook.Worksheets
For Each pt In ws.pivotTables
pt.refreshTable
For Each pf In pt.pivotFields
For Each pi In pf.pivotItems
If pi.recordCount = 0 And _
Not pi.isCalculated Then
pi.Delete
End If
Next
Next
Next
Next
End Sub


Et un autre solution , à partir d'excel 2002 uniquement :


Sub deleteMissingItems2002()
'prevents unused items in XL 2002 pivotTable
Dim pt As pivotTable
Set pt = activeSheet.pivotTables.Item(1)
pt.pivotCache.missingItemsLimit = xlMissingItemsNone
End Sub


malheureusement cela ne fonctionne pas, j'ai mis la macro (la deuxieme dans la citation) dans les feuilles ou il y a les TCD, et même dans un module de feuille comme c'était préciser dans le WIKI page9 (tan pis pour la redondance) mais néant, j'ai même pas un plantage, faut il que j'ajoute un bouton de commande dans les feuilles ou il y a les TCD?

merci pour votre aide.
 

Dan

XLDnaute Barbatruc
Re : Détruire anciennes étiquettes dans TCD

Bonjour,

Mets cette macro dans un module puis tu l'exécutes par menu/outils/macro/macro.

Attention toutefois à ta version d'excel. La prenière macro est pour excel 97 à 2000 tandis que la seconde est pour excel 2002.

A te lire
 

Dan

XLDnaute Barbatruc
Re : Détruire anciennes étiquettes dans TCD

Re,

Oui. Je n'ai malheureusement pas Excel 2003.
Le mieux serait de construire ton TCD par macro mais là je dois voir ton fichier.
Si tu peux le placer ici avec données non confidentielles je veux bien regarder cela.

A te lire
 

p@cm@n

XLDnaute Junior
Re : Détruire anciennes étiquettes dans TCD

Bonsoir le forum, salut Dan

je te prépare une version allégé de mon fichier, de façon à pouvoir te le transmettre sur le forum, par contre cela m'arrange pas de construire le TCD via le VBA, car déja lorsque j'ai toute les données saisie 800 à 900 lignes(donc fichier intégrale) la taille est importante entre 800 et 900Ko (c'est pas si gros, mais bon), avec tout le tableau passant par le VBA cela risque de l'alourdir, de plus je m'en sert comme lien dans un autre classeur.

donc si c'est possible, de corriger le code actuel, sans devoir refaire le TCD par VBA, ce serait mieux. si c'est pas possible j'aviserai.

en tous cas merci de ton aide.

@+ avec le fichier
 

p@cm@n

XLDnaute Junior
Re : Détruire anciennes étiquettes dans TCD

Bonsoir le forum, salut Dan


je venais d'écrire ma réponse, et j'ai fait une mauvaise manip j'ai tout effacé.

alors pour résumé, j'essai de te préparer un fichier "light" pour que tu visualise la chose, quand je dis light c'est vraiment léger car j'ai pas encore réussi atteindre la bonne taille pour le mettre sur le forum, et pourtant j'en ai supprimer des choses (y a plus que deux onglet sur 5, 1 TCD sur 3, et pas mal de ligne de données supprimer) malheureusement pour le moment j'en suis à 56,9Ko compressé en ZIP je crois que c'est encore trop gros, il faut 50Ko.

d'autre part, je suis pas trop partisant de refaire les tableaux en VBA, car déja lorsque j'ai le fichier complet je suis entre 800 et 900 lignes de données, et une taille de fichier avoisinant les 1Mo, avec les trois TCD et le graph. si à cela il y a un code VBA pour réaliser les tableau, cela risque d'alourdir le classeur, tu crois pas?

donc si c'est possible, de corriger seulement le code pour détruire les anciennes étiquettes du ou des TCD, cela m'arrangerai bien, dans le cas contraire, j'aviserai.

en tous cas merci de me venir en aide.

@+ avec le fichier à la bonne taille.
 

p@cm@n

XLDnaute Junior
Re : Détruire anciennes étiquettes dans TCD

impossible de réduire à 50Ko, sinon y a plus de données, donc quelle intéret que je t'envoi un fichier, si il y a pas les données qui vont avec le TCD.

de 900 lignes de données je suis passer à 19, je fais quoi je met que 3 lignes, mais est ce que cela sera suffisant pour que tu comprennes le classeur.

je laisse tomber l'envoi, car à force de diminuer les données, et bien du coup les étiquettes dans le seul TCD qui reste ne sont pas en doublon, donc tu ne pourra pas voir le problème, et cela me met le bourdon.

merci quand même d'avoir essayer de m'aider. si je trouve une autre soluce pour t'envoyer un fichier qui soit parlant, je manquerai pas de le faire.

@+ sur le forum
 

p@cm@n

XLDnaute Junior
Re : Détruire anciennes étiquettes dans TCD

Dan,

J'ai coupé mon fichier en deux, il suffit de remettre les données dans le classeur Tableau, sans oublier de mettre à jour le TCD, car j'ai fais faire un régime au classeur des données.

aller j'envoi les deux classeurs
 
Dernière édition:

Dan

XLDnaute Barbatruc
Re : Détruire anciennes étiquettes dans TCD

Bonjour,

Ok j'ai bien reçu tes deux fichiers.
Je n'ai pas considéré les liaisons car il sembe que tu fasses appel à une base de données externe pour importer les valeurs dans ton fichier. A titre d'information, sache que tu peux aussi créer un TCD en reprenant les champs de ta base de données.

Pour ce qui est de ta macro Sub deleteMissingItems2002(), je pense qu'elle ne fonctionne pas parce que non adaptée à ton pb. C'est la définition "ITEM(1)" dans le code qui est en cause. Cela correspond au champ 1 du TCD et tandis que tes items à éliminer ne sont probablement pas dans ce champ.

Compte tenu de cela j'ai un peu modifié la macro de D. Dalgleish. Essaie celle adaptée à ton fichier selon les cas ci-après :

1. Si tu as le(s) TCD sont sur une seule feuille
Code:
Sub deleteolditem()
'Macro de Debra Dalgleish adaptée par DAN pour p@cm@n le 31/10/06
'http://www.excel-downloads.com/forum/69453-detruire-anciennes-etiquettes-dans-tcd.html
Dim pt As PivotTable
For Each pt In ActiveSheet.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pt.PivotCache.Refresh
Next pt
End Sub
2. si tu as plusieurs TCD répartis sur plusieures feuilles
Code:
Sub deleteolditem()
'Macro de Debra Dalgleish adaptée par DAN pour p@cm@n le 31/10/06
'http://www.excel-downloads.com/forum/69453-detruire-anciennes-etiquettes-dans-tcd.html
Dim pt As PivotTable
Dim sh As Worksheet
For Each sh In Worksheets
For Each pt In sh.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pt.PivotCache.Refresh
Next pt
Next sh
End Sub

Fais moi savoir si cela fonctionne car, n'ayant pas Excel 2003 à la maison et au boulot, je n'ai malheureusement pas pu les tester.

A te lire
 

p@cm@n

XLDnaute Junior
Re : Détruire anciennes étiquettes dans TCD

Bonjour Dan , le forum

avec tes explications cela devient beaucoup plus clair,
pour ma part j'utilise le deuxieme code, qui correspond à mon classeur, et cela fonctionne parfaitement, j'ai quand même testé le 1er code, qui fonctionne aussi mais avec la différence qu'il faut effectivement avoir tous les TCD sur la même feuille.

dans la page WIKY n°9 dans la macro de D.Dalgleish la subtilité n'est pas expliqué, mais la base est présente.

Dan à dit:
A titre d'information, sache que tu peux aussi créer un TCD en reprenant les champs de ta base de données.

n'est ce pas ce que j'ai fait? ou alors je comprend pas ce que tu veux dire.

grand merci pour l'aide que tu m'as apporté.
 

Dan

XLDnaute Barbatruc
Re : Détruire anciennes étiquettes dans TCD

Re,

A titre d'information, sache que tu peux aussi créer un TCD en reprenant les champs de ta base de données.

n'est ce pas ce que j'ai fait? ou alors je comprend pas ce que tu veux dire.

Je pense que tu as lié la base de données avec Excel. ce que je voulais dire c'est que à l'étape 1 de la construction du TCD, je ne pense que tu as choisi "souce de données" mais bien "base de données excel".
Là tu pourais essayer avec "source de données" pour construire le TCD à aprtir de la base de données en direct.

A te lire
 

p@cm@n

XLDnaute Junior
Re : Détruire anciennes étiquettes dans TCD

effectivement j'ai crée le TCD avec "Base de données Execel" mais qu'est ce que cela m'apporterai de le faire avec "Sources de données externe" je pensais que mon raisonnement était logique.

explique moi les avantages d'utiliser ce que tu préconise.

sachant que ce que j'utilise de la base de données n'est qu'un complément d'information concernant les codes Cies, pour alimenter mon classeur. il n'y a que ca dans le classeur DataBase Cie, alors que pour le TCD j'utilise plusieurs colonnes différentes qui n'existe pas dans le fichier Excel DATABASE.
@+
 
Dernière édition:

Dan

XLDnaute Barbatruc
Re : Détruire anciennes étiquettes dans TCD

Re,

Au vu de ce que tu expliques ta manière est correcte. Je pensais simplement que toutes les données provenaient d'une source externe; raison pour laquelle je t'ai parlé de cela.
Ta méthode est bonne alors.

A bientôt
 

Discussions similaires

Statistiques des forums

Discussions
312 342
Messages
2 087 434
Membres
103 545
dernier inscrit
agent3