Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/02/2007, 10h30   #1
Membre habitué
 
Inscription : mars 2005
Messages : 129
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2005
Messages : 129
Points : 105
Points : 105
Envoyer un message via MSN à piro
Par défaut [TCD/GCD] Afficher/Masquer élément

Bonjour,
j'ai un problème de macro excel. J'ai un TCD (et un GCD) avec un menu déroulant gérant ce qui doit être affiché/masqué.
Je dois intervenir sur certains éléments de cette liste pour les Afficher ou Masquer.
J'ai donc commencé par enregistré ma macro pour voir les élément concernés, j'ai donc pu récupérer le code suivant :
Code :
1
2
3
4
5
6
7
8
With ActiveChart.PivotLayout.PivotTable.PivotFields("Exercise")
        .PivotItems("CSP - StratPlan 06 OPT v1 14-06 - 2006 - OPTIMISTIC").Visible _
        = False
        .PivotItems("CSP - StratPlan 06 v1 19-06 - 2006 - MOST LIKELY").Visible = _
        False
        .PivotItems("CSP - StratPlan BC 06 - Tests GFS - 2006 - MOST LIKELY"). _
        Visible = False
End With
Le problème est que la macro fonctionne tres bien pour décocher les éléments ci-dessus, mais pour les recocher (on passe à True), il me renvoie une erreur me disant que l'attribut Visible n'est pas attribuable à PivotItems.
Pour information je suis sous Excel 2003, si quelqu'au à une solution à mon problème...
Merci
__________________
ACTC (certification Mac OS X/Mac OS X Server)
Windows par obligation, Mac par délectation.
Confirmé débutant (ou débutant confirmé) JAVA, C, PHP, JavaScript, HTML....
piro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 13h02   #2
Membre régulier
 
Avatar de doringen
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 71
Points : 71
j´ai eu le même problème, et la solution la plus simple pour moi a été de carrément enlever le "pivot fields" concerné du TCD puis de le réintroduire, ce qui remet tous les éléments en visible.
C´est à peu près aussi élégant qu´un monument post-stalinien, mais au-moins...
Ci-joint à tout hasard le code pour un champs "Nature":
Code :
1
2
3
4
5
6
7
8
9
10
11
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Nature").Orientation = _
        xlHidden
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Nature")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Nature")
        .PivotItems("inhärent").Visible = False
        .PivotItems("kontrolle").Visible = False
        .PivotItems("(Leer)").Visible = False
    End With
Il y a sûrement une solution plus élégante dont je serais évidemment preneur, je conseille d´attendre un peu avant de mettre le topic en résolu
doringen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 14h21   #3
Membre habitué
 
Inscription : mars 2005
Messages : 129
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2005
Messages : 129
Points : 105
Points : 105
Envoyer un message via MSN à piro
Merci pour ta réponse.
J'ai par ailleurs trouvé une fonction qui marche chez moi (je ne sais pas si c'est la meilleure:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Sub afficherMasquerCSP(Optional afficheCsp As Integer = -1)
'
' Cette macro est utilisée pour Masquer/Afficher de la listes de éléments de types CSP
'
' La valeur par défaut permet de changer l'etat (masquer/Afficher) selon l'état actuel de la première
' ligne CSP. Autrement on peut forcer l'état (ce qui est le cas avec lors du démarrage) :
' 0 Pour masquer
' 1 Pour afficher
 
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim pi As PivotItem
    Dim strPF As String
    Dim first, etat As Boolean
    first = True
 
    If afficheCsp <> -1 Then
        first = False
        If afficheCsp = 0 Then
            etat = False
        Else
            etat = True
        End If
    End If
    Set pt = ActiveChart.PivotLayout.PivotTable
    Set pf = pt.PivotFields("Exercise")
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
       With pf
        .AutoSort xlManual, .SourceName
         For Each pi In .PivotItems
             If Left(pi.Name, 3) = "CSP" Then
             If first Then
                etat = Not pi.Visible
                first = False
            End If
             pi.Visible = etat
            End If
         Next pi
        .AutoSort xlAscending, .SourceName
        End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MiseEnFormeGCD
End Sub
J'ai trouvé des informations sur le site suivant :
http://www.contextures.com/xlPivot03.html
__________________
ACTC (certification Mac OS X/Mac OS X Server)
Windows par obligation, Mac par délectation.
Confirmé débutant (ou débutant confirmé) JAVA, C, PHP, JavaScript, HTML....
piro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h34.


 
 
 
 
Partenaires

Hébergement Web