Macro Tableau dynamique

Bonjour,

Je suis débutant dans la macro (en gros je travail avec l'enregistreur quoi), et je cherche désespérément à faire marcher une macro que je veux mettre en place pour un tableau croisé dynamique, voici mon soucis :

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _

"Ordre impr.")

.PivotItems("1000.00").Visible = False

.PivotItems("1010.00").Visible = False

.PivotItems("1020.00").Visible = False

.PivotItems("1025.00").Visible = False

.PivotItems("1026.00").Visible = False

Je ne vous met pas la macro complète ça ne sert pas à grand chose.

Bref ce que j'aimerai arriver à faire, c'est que au lieu d'avoir une longue liste avec tout les "Pivotitems", j'aimerai une macro disant ceci :

Cacher tout les Pivotitems dont la valeur (ou plutôt le nom) de ceux ci sont égal et supérieur à 1000 (donc de 1000 à 999999,99).

En effet, ces fameuses valeurs sont différentes d'un tableau à l'autre que je traite, je ne peux donc reprendre cette macro et l'appliquer sur tout mes tableaux, mais je sais qu'à chaque fois les valeurs (ou les noms je sais pas comment Excel analyse ça) que je veux cacher sont toutes égales ou supérieurs à "1000"

Un grand merci d'avance pour vos réponse

Bonjour PhantomBZH, le forum,

Cacher tout les Pivotitems dont la valeur (ou plutôt le nom) de ceux ci sont égal et supérieur à 1000 (donc de 1000 à 999999,99).

Un début de réponse (fait à partir de l'enregistreur de macro également, )

(filtre s'appliquant aux étiquettes/... inférieur à 1000)

9classeur1.xlsm (24.04 Ko)

Cordialement,

Bonjour

Tes noms sont considérés comme texte j'imagine, donc si ton séparateur décimal n'est pas le point, ceci devrait fonctionner

For each Cas in ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( "Ordre impr.").Pivotitems
    if If CLng(Left(Cas, InStr(Cas, ".") - 1)) > 1000 Then.Visible = False
Next Cas

Bonjour 78chris ,

J'ai dû adapter ton code de la sorte pour que cela fonctionne chez moi.....petit oubli ?

Sub chris()

Dim Cas

For Each Cas In ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Ordre impr.").pivotitems
    If CLng(Left(Cas, InStr(Cas, ".") - 1)) >= 1000 Then Cas.Visible = False
Next Cas

End Sub

Pourquoi le -1, stp ?

J'ai testé sans, ça fonctionne également,

If CLng(Left(Cas, InStr(Cas, "."))) >= 1000 Then Cas.Visible = False

Amitiés,

Merci à xorsankukai de réparer mes bétises .

le -1 pour couper avant le . qui semblait ne pas plaire à Excel...

Re 78chris,

le -1 pour couper avant le . qui semblait ne pas plaire à Excel...

Merci pour cette précision,

Bonne soirée ,

Marche niquel un grand merci à vous !!

Edit :

J'aimerai à présent mettre en place une macro pour mettre certaines lignes en couleur, exemple :

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect _

"'Horaires Mensuels'", xlDataAndLabel + xlFirstRow, True

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorAccent5

.TintAndShade = 0.799981688894314

.PatternTintAndShade = 0

Ici je veux que la ligne 'Horaires Mensuels' soit en bleu clair, le soucis c'est que dans certains tableaux je n'ai pas de ligne 'Horaires Mensuels', ce qui fait que la macro bloque et ne continue pas sur la suite (d'autres lignes avec d'autres couleurs)

Il faudrait que j'arrive à mettre en place quelque chose disant ceci :

Si il y a une ligne 'Horaires Mensuels' (pour rester dans mon exemple), alors la mettre en couleur, sinon passer à la ligne suivante de la macro.

A nouveau un grand merci d'avance pour votre aide

Rechercher des sujets similaires à "macro tableau dynamique"