tableau croisé dynamique

Maguy53

XLDnaute Nouveau
Bonsoir à tous,
J'ai deux fichiers : l'un avec les données, l'autre avec les TCD et graphiques associés. Chaque année, je crée un nouveau fichier de données mais conserve l'autre (il est parfait --> pas de raison d'en changer). je n'ai qu'à modifier les liaisons et c'est parti pour 365 jours.............
Sauf que dans mes TCD, les années précédentes restent dans les boutons des champs. Ex, le TCD des données mensuelles, j'ai 01-04,01-05,01-06,01-07,02-04 etc... Cela ne nuit en aucun cas à la fiabilité du fichier mais je trouve que cela fait un peu "désordre". Une idée ?
Merci par avance et bonne soirée
 

Dan

XLDnaute Barbatruc
Re : tableau croisé dynamique

Bonjour,

Merci de tes infos.
Suis ces indications :

1. Si tu as le(s) TCD sont sur une seule feuille
Code:
Sub supprimevieuxitemsTCD()
'macro de Dagleish adaptée par Dan pour Maguy53
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
On Error Resume Next
For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
pt.ManualUpdate = True
    For Each pf In pt.VisibleFields
      If pf.Name <> "Data" Then
        For Each pi In pf.PivotItems
          If pi.RecordCount = 0 And _
            Not pi.IsCalculated Then
            pi.Delete
          End If
        Next pi
      End If
    Next pf
pt.ManualUpdate = False
pt.RefreshTable
Next pt
End Sub
2. si tu as plusieurs TCD répartis sur plusieures feuilles
Code:
 Sub supprimevieuxitemsTCD()
'macro de Dagleish adaptée par Dan pour Maguy53
Dim sh As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
On Error Resume Next
For Each sh In ActiveWorkbook.Worksheets
  For Each pt In sh.PivotTables
    pt.RefreshTable
    pt.ManualUpdate = True
    For Each pf In pt.VisibleFields
      If pf.Name <> "Data" Then
        For Each pi In pf.PivotItems
          If pi.RecordCount = 0 And _
            Not pi.IsCalculated Then
            pi.Delete
          End If
        Next pi
      End If
    Next pf
pt.ManualUpdate = False
pt.RefreshTable
Next pt
Next sh
End Sub
Une de ces deux codes est à placer en VBA dans un module.
Pour ce faire :
- ALT + F11 pour aller en VBA
- Menu/insertion/module
- A droite, colle le code qui convient
- Pour l'exécuter, tu peux aller dans menu/outils/macro/macros, et là sélectionner la macro en quastion puis cliquer sur le bouton "exécuter".

A te lire

Dan
 

Dan

XLDnaute Barbatruc
Re : tableau croisé dynamique

Re,

Ok mais les dates qui sont dans ta base de données resteront évidemment. C'est pourquoi tu vois celles > à 2007.
Cette macro supprime les items qui ont été conservé par le TCD mais qui ne sont plus dans ma base de données.

Ou alors je n'ai peut être pas compris tout ton pb. si c'est le cas, envoie moi ton fichier avec un mot d'explication, ce sera plus simple de te dépanner.

A te lire

Dan
 

Maguy53

XLDnaute Nouveau
Re : tableau croisé dynamique

En fait, Dan, ce fichier est professionnel et il ne m'appartient pas de le diffuser.
Par contre, j'ai joint une image où tu verras clairement ce dont je veux me débarrasser : tous les semaines 06, inutiles. Bientôt, je vais repiquer mon fichier pour 2008, clôturer la base de données 2007, relier mes tcd à une nouvelle base 2008............. et j'aurai 06 et 07 inutiles. Dans la fiabilité de l'outil, ce n'est pas gênant mais ca fait désordre quand même.

Cordialement
 

Pièces jointes

  • tcd.jpg
    tcd.jpg
    19.2 KB · Affichages: 47
  • tcd.jpg
    tcd.jpg
    19.2 KB · Affichages: 48
  • tcd.jpg
    tcd.jpg
    19.2 KB · Affichages: 50

Maguy53

XLDnaute Nouveau
Re : tableau croisé dynamique

Ca marche !
Merci beaucoup Dan pour ton aide (et les explications complémentaires fournies en mp).
Mes vieux items ont disparu, mes fichiers sont tout propres et comme je les partage avec ma Direction, je vais passer pour une Pro (y aurait-il de la rallonge dans l'air pour Noël ;-)))

Pour les néophytes comme moi, fallait Zossi ouvrir les fichiers liés pour que la manip fonctionne.

Je suis ravie !
A+
 

krysflore

XLDnaute Nouveau
Re : tableau croisé dynamique

Bonjour à tous et à toutes

J'ai lu avec attention et beaucoup d'intérêt ce fil.

Or, j'ai essayé la macro mais elle ne me donne pas le résultat escompté (j'ai toujours les anciennes données que j'ai enlevé de ma base de données). Ma base de données sur trouve dans le même fichier que mon TCD.
Je précise que je suis sur windows XP avec une version excel 2000 si ça peu aidé.

Merci pour vos réponses.
 

Discussions similaires

Statistiques des forums

Discussions
312 555
Messages
2 089 561
Membres
104 211
dernier inscrit
clubdesjeunesdela7