cacher des items dans un TCD par macro

  • Initiateur de la discussion Vince
  • Date de début
V

Vince

Guest
Bonjour à tous ,

Encore une petite question sur les TCD car je mets en palce un macro qui permet de changer le nom de la colonne sources des items pour le TCD pour effacer les items plus utilisés mais toujours en mémoire par Excel. Donc ça marche très bien exepté que mes items que j'avais caché au départ comme par exemple blank ou 0 apparaissent de nouveau.
Donc je voudrais pouvoir trouver la commnade VBA pour cacher le items incriminés. Si quelqu'un connais la méthode a utiliser et surtout la syntaxe car j'ai essayé avec HiddenFields enfin bref je ne sais pas l'écrire.....
Voici la macro test pour le moment :

Sub misajour()
Dim buffer As String
If Range("A1") = "lettre" Then
Range("A1") = "lettres"
Else
Range("A1") = "lettre"
End If
ActiveSheet.PivotTables("MonTCD").RefreshTable
ActiveSheet.PivotTables("MonTCD").AddFields RowFields:=Range("A1")
'Cacher Items non désirés
ActiveSheet.PivotTables("MonTCD").RefreshTable
End Sub


Merci d'avance
disk.gif


Vince
 
V

Vince

Guest
Bonjour le Forum, Salut Dan,

Je crois que tu n'as pas bien saisi mon idée ou alors je me suis pas bien expliqué: je change le nom de la colonne source du TCD puis je mets à jour le TCD pour qu'il efface les anciens items et ensuite je crée un nouveau champs pour que le TCD prenne en compte, à la seconde mise à jour, les nouveaux items.
Cela marche très bien mais je ne conserve pas les options d'affichage de l'ancien champs et c'est celà que j'aimerais codé.
J'espère ne pas avoir été trop confu dans mon explication.....

A +
Vince
 
D

Dan

Guest
Bonjour Vince,

Je n'avais pas bien saisi ton idée.
Dans le TCD tu ne conserves pas les options d'affichage puisque tu changes le champ, ceci te contraint bien entendu à refaire le TCD

Essaie d'insérer cette instruction pour supprimer les 0 :

"ActiveSheet.PivotTables("nom du TCD").DisplayNullString = True"

Ce que tu peux aussi faire c'est utiliser l'enregistreur de macro automatique d'Excel et enregistrer tes options d'affichage puis les inclure dans ta macro "miseajour".

Sinon est-ce possible de m'envoyer un modèle de ton fichier.

@+

Dan
 
V

Vince

Guest
Bojour à tous, Salut Dan

Ok merci Dan grace à l'enregistreur de Macro j'ai trouvé ma ligne de code qui me manquait à savoir :
ActiveSheet.Pivotables("MonTCD").PivotFields("lettre").PivotItems("(blank)").visible=False
et pour les Zéros
ActiveSheet.PivotTables("PivotTable7").PivotFields("lettre")
.PivotItems("0").Visible = False

Merci de ton aide et à une prochaine fois

Vince
 
V

Vince

Guest
Rebonjour à tous donc voici ma Macro terminée mais maintenant je souhaiterais passer en paramètre la cellule source qui est le titre d'un champ du TCD (ici I3) et le nom du TCD car en fait j'ai 99 TCD que je voudrais mettre à jour et bien entendu je vais pas répété 99 fois le même code....
*************************************************
Sub Vince()
Sheets("Cal1").Select
Range("I3").Select
ActiveCell.FormulaR1C1 = "N° Lots"
Sheets("Tab1").Select
ActiveSheet.PivotTables("100130500").PivotSelect "", xlDataAndLabel
ActiveSheet.PivotTables("100130500").RefreshTable
Sheets("Cal1").Select
Range("I3").Select
ActiveCell.FormulaR1C1 = "N° Lot"
Sheets("Tab1").Select
ActiveSheet.PivotTables("100130500").RefreshTable
ActiveSheet.PivotTables("100130500").AddFields RowFields:
=Array("N° Lot","Min", "Max")
With ActiveSheet.PivotTables("100130500").PivotFields("N° Lot")
.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotItems("").Visible = False
.PivotItems("#VALUE!").Visible = False
End With
End Sub
*************************************************
Malheureusement j'ai des plantages j'ai essayé pour la cellule
Sub Vince(p_cellule as Range)
et dans l'appelle Vince(I3) par exemple mais message d'erreur me disant Object Required

Pour le TCD c'est bon j'ai mis Sub Vince(y as string)
et j'ai remplacé dans le code "100130500" par y
puis l'appel Vince(100130500)

Si quelqu'un pouvait me dire comment résoudre ce problème de passage de paramètre avec la cellule source ? Merci d'avance.
 
V

Vince

Guest
Bon en fait j'ai réussi à trouver tout seul (Youpi !) et je vous joins le code final pour ceux que ça intéresse => Il permet de mettre à jour un TCD en éliminant les champs anciens que Excel a gardé en mémoire...Voilà enfin je crois savoir que ce bug fut corrigé sur la version XP mais ici je suis sur XL97.....
allez bonnjournée à vous et bon week end

*************************************************
Sub Appel()
Vince 100130400, 3, 5
End Sub

Sub Vince(y As String, i As Integer, j As Integer)
'
' Vince Macro
' Macro recorded 08/08/2003 by Vincent
'
Sheets("Cal1").Select
Cells(i, j).Select
ActiveCell.FormulaR1C1 = "N° Lots"
Sheets("Tab1").Select
ActiveSheet.PivotTables(y).PivotSelect "", xlDataAndLabel
ActiveSheet.PivotTables(y).RefreshTable
Sheets("Cal1").Select
Cells(i, j).Select
ActiveCell.FormulaR1C1 = "N° Lot"
Sheets("Tab1").Select
ActiveSheet.PivotTables(y).RefreshTable
ActiveSheet.PivotTables(y).AddFields RowFields:=Array("N° Lot", _
"Min", "Max")
Application.DisplayAlerts = False
With ActiveSheet.PivotTables(y).PivotFields("N° Lot")
.Subtotals = Array(False, False, False, False, False, False, False, False, False, _
False, False, False)
.PivotItems("#VALUE!").Visible = False
If Cells(i + 2, j) <> "" Then .PivotItems("").Visible = False
End With
End Sub
 

Statistiques des forums

Discussions
314 085
Messages
2 105 631
Membres
109 402
dernier inscrit
dalilouille