IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

creation TCD et masquage "pivotsitems" [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Par défaut creation TCD et masquage "pivotsitems"
    Bonjour à tous,

    En 1er lieu, je travail sur lotus notes donc en LS et non en VBA.
    même si ils sont tous deux similaires.
    on m'a demandé de réaliser un exportation d'une base lotus en excel avec création automatique de plusieurs TCD.

    mon souci : je doit cacher certaines catégories(pivotsitems) dans certain TCD.
    si ils n'existes pas : plantage.

    Mon exemple en LS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    		'tableau croisé 2(emplacement et nom)
    	emp = emp + 3 + XlPivotTable.TableRange2.Rows.Count 'calcul pour laisser 3 cellule vides enptre les 2 TCD
    	Set XlPivotTable = PivotCache1.CreatePivotTable(feuil2.range("B"+Cstr(emp)),"Pivot2")
    		'paramètres des champs du tableau : Pivot2
    	With XlPivotTable.PivotFields("Action")
    		.Orientation = 1	
    		.PivotItems("Prise en compte").Visible = False ' le plantage est ici
    		.PivotItems("En attente d'avis").Visible = False
    		.PivotItems("En attente décision").Visible = False		
    	End With
    	...
    existe t'il une propriété de type : PivotFields("Action").listes qui renvoi la listes des items contenu dans le tableau?
    ou une autre fonction qui pourrait m'aider.

    Merci d'avance pour l'information

    Aussi, je cherche de la documentation VBA pour TCD qui pourrai m'aider dans ma tache. si vous savez ou trouver se genre de document je suis preneur.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 317
    Par défaut
    Bonjour,

    essaie peut-être ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim PvI As PivotItem
    Dim AMasquer
    AMasquer = Array("Prise en compte", "En attente d'avis", "En attente décision")
    '....
    '....
    With xlPivotTable.PivotFields("Action")
        .Orientation = 1
        For Each PvI In .PivotItems
            PvI.Visible = True
            If Not IsError(Application.Match(PvI.Name, AMasquer, 0)) Then PvI.Visible = False
        Next PvI
    End With
    '....
    '....
    Bonne journée

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Par défaut
    Merci mapech

    en utilisant les propriétés : .PivotItems et .name j'ai pu faire ce que je voulais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ...	Dim MaskDes(2) As String 'ligne a masquer pour ne voir que les decisions
    	MaskDes(0) = "Prise en compte"
    	MaskDes(1) = "En attente d'avis"
    	MaskDes(2) = "En attente décision"
    ...
    	With XlPivotTable.PivotFields("Action")
    		'Masquage des lignes non conserné par le tableau
    		Forall X In .PivotItems
    			For i = 0 To Ubound(MaskDes)
    				If X.name = MaskDes(i) Then
    					.PivotItems(MaskDes(i)).Visible = False
    				End If
    			Next
    		End Forall
    ...

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo