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

Excel Discussion :

[E03] - Figer étiquettes tableau croisé dynamique


Sujet :

Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut [E03] - Figer étiquettes tableau croisé dynamique
    Bonjour

    Je rencontre des soucis dans un tableau croisé dynamique.

    Mon TDC fait appel a un fichier source qui change de façon quotidienne.

    Mon TDC me remonte des statistiques sur des mouvements de personnel mais la colonne source utilisée comporte aussi d'autres informations.

    A chaque rafraichissement de données, je suis obligé de décocher toutes les valeurs qui ne m'intéresse pas et laisser les 4 qui m'intéressent dans le TDC(Arrivée de personnel, départ de personnel, mutation de personnel et prolongation de personnel).

    Existe-t-il un moyen simple et efficace pour figer ces valeurs sans être pollué par les autres informations ?

    Merci par avance

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,

    Ayant été confronté au même problème je l'ai contourné par VB, voici le type de code qui peut être utile.
    Utiliser une boucle pour parcourir tout les éléments contenus dans le champ et ne faire afficher (=True) que ce qui correspond aux éléments à garder.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Sheets("sheet1").PivotTables("PivotTable1").PivotFields("Place")
            .PivotItems(MyPlace).Visible = True
            .PivotItems("None").Visible = False      
    End With
    Bon amusement

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Bonjour

    Merci ça m'a l'air impeccable.

    Par contre, comment faire une boucle comme indiqué ?

    Merci

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Là ça risque d'être un peu long surtout que je connais pas la structure de ton TCD et que je dois partir...tu peux peut-être regarder dans les FAQ ou les autres discussions.

    Désolé,

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Ok, merci en tout cas pour ton aide précieuse et ta rapidité.

    Ce que je ne comprends pas dans ton code, c'est comment lui dire de ne montrer que ce qui m'intéresse en excluant les autres infos qui peuvent arriver depuis ma source (et que je ne connais pas par avance).

    Mais la boucle doit être prévue pour cela.

    Est-ce que quelqu'un pourrait me guider ?

    Merci par avance

  6. #6
    Membre éprouvé
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Points : 1 079
    Points
    1 079
    Par défaut
    Bonjour,

    je ne connais pas la structure de votre TCD mais, personnellement, dès que je le peux j'utilise les fonctions base de données et la fonction SOMMEPROD.
    Si elles sont un peu lourdes à mettre en oeuvre, une fois au point, elles se mettent à jour instantanément et on peux travailler la mise en forme.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Bonjour à tous

    Quelqu'un pourrait-il m'aider à mettre en place la solution de Fvandermeulen car je n'arrive pas à lui fixer certaines valeurs d'étiquettes.
    Je voudrais qu'il ne m'affiche définitivement dans mon TCD que 4 étiquettes.

    Merci par avance pour l'aide

  8. #8
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Je suis de retour...Pour t'aider je vais prendre un exemple, en considérant que les champs que tu dois 'nettoyer' soit en liste dans la colonne A.

    Dans ce cas, imaginons, qu'après le Refresh tu as des Item de A5 à A9, 9 pouvant varier.

    Dans la macro on d'abord compter le nombre de ligne, ensuite via la boucle on va 'repérer' chaque Item contenu entre A5 et A9.
    On compare cet Item à ce que tu veux garder, si c'est = on affiche, sinon on masque

    J'ai ajouter les éléments à garder dans la feuille, c'est plus facile à repérer ensuite dans le code.

    C'est pas le code le plus court, mais je pense qu'il est assez compréhensible, le but étant que tu y arrive tout seul la prochaine fois

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Super ce code

    Merci

    Par contre lorsque je remplace par mes valeurs, il me met une erreur exécution 1004 : Impossible de lire la propriété PivotItems de la classe PivotField.

    Le code modifié (je met mes valeurs dans le code et pas dans la feuille) :

    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
    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
    47
    48
    49
    50
    Option Explicit
     
    Sub DeleteItem()
     
     
    Dim MyRef1 As String
    Dim MyRef2 As String
    Dim MyNbItem As Integer
    Dim MyLastLine As Integer
    Dim MyItem As String 'prendra la valeur texte des item au fur et à mesure
    Dim i As Integer 'i = compteur
     
    'On donne les valeurs aux variables
    MyRef1 = "Départ de personnel"
    MyRef2 = "Arrivée de personnel"
    MyNbItem = Application.Subtotal(3, Sheets("Test").Range("a5:a65536"))
    MyLastLine = 3 + MyNbItem
      '3 car le tableau commence à ligne 5 mais il faut enlever la ligne des totaux
     
    For i = 5 To MyLastLine
     
    MyItem = Sheets("Test").Cells(i, 1)
     
    'On compare les Items au référence
        If Sheets("Test").Cells(i, 1) = MyRef1 Then
            With Sheets("Test").PivotTables("PivotTable1").PivotFields("Champ a nettoyer")
            .PivotItems(MyItem).Visible = True
            End With
            GoTo 1 'Evite de passer par la ligne qui masque
            Else
                If Sheets("Test").Cells(i, 1) = MyRef2 Then
                    With Sheets("Test").PivotTables("PivotTable1").PivotFields("Champ a nettoyer")
                    .PivotItems(MyItem).Visible = True
                    End With
                GoTo 1 'évite de masquer car OK
                End If
        End If
     
            With Sheets("Test").PivotTables("PivotTable1").PivotFields("Champ a nettoyer")
            .PivotItems(MyItem).Visible = False
            End With
                i = i - 1
                MyLastLine = MyLastLine - 1 'On décrémente car plus affiché sur la feuille
                    If i = MyLastLine Then
                    GoTo 2 'renvoi à la fin car dernière ligne atteinte
                    End If
     
    1 Next i
     
    2 End Sub
    Bizarre non ???

  10. #10
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Sur quelle ligne coince t'il exactement ?
    Vérifie bien la syntaxe, une espace ou ou un accent peu faire la diffrence...

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Hello

    Sur cette ligne :

    .PivotItems(MyItem).Visible = False

  12. #12
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Quelle valeur retourne t'il pour MyItem au moment de l'erreur ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Hello

    Je comprends pas car il ne refait plus l'erreur.

    Je vais tester sur mon TCD et je te tiens informé

    Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2015, 10h55
  2. Lire sous VBA des étiquettes de ligne d'un tableau croisé dynamique
    Par clem256 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2013, 16h01
  3. Réponses: 2
    Dernier message: 04/09/2013, 11h11
  4. figer un tableau croisé dynamique
    Par Mauna dans le forum Excel
    Réponses: 2
    Dernier message: 09/09/2009, 11h41
  5. tableau croisé dynamique sous delphi, comment ?
    Par Brice Yao dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/07/2005, 10h33

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