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 :

Rafraîchir les filtres d'un tableau croisé dynamique


Sujet :

Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Rafraîchir les filtres d'un tableau croisé dynamique
    Bonjour à tous!

    Après plusieurs recherches, je n'ai trouvé personne qui avait le même problème que moi, et encore moins de solution!

    J'ai un tableau croisé dynamique tout simple basé sur un onglet de données. De nouvelles lignes sont ajoutées à tous les jours dans cet onglet de données et mon TCD en prend compte sans problème. Sauf que les nouveaux items, dans la liste déroulante des filtres, s'affichent tout en bas de la liste au lieu de s'insérer au bon endroit (selon l'ordre alphabétique). J'ai eu beau modifier toutes sortes d'options, Excel n'effectue jamais le tri automatiquement. (Même après un refresh)

    Ce n'est pas très pratique quand on recherche une valeur en particulier dans le fitre, surtout qu'il est impossible de faire un filtre personnalisé...

    J'ai cherché une méthode par vba, rien trouvé non plus. La seule solution que je vois est de recréer complètement le tableau! Je ne peux pas faire ça à chaque fois, il y a trop de "set-up" à faire pour que le tableau soit présentable.

    Merci pour vos idées.
    Flower.

  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 : 48
    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
    Salut,

    Tu peux contourner ce "problème" assez simplement par ce petit bout de code, Catégorie étant le nom du champ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveSheet.PivotTables("PivotTable1").PivotFields("Catégorie").AutoSort _
            xlAscending, "Catégorie"
    Si tu veux ordonner plusieurs champ tu dois les nommer ou tu peux très facilement faire une boucle sur tous les champs si tu veux qu'ils soient tous ordonnés.

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    J'ai fait une boucle et ça fonctionne super bien.
    Merci beaucoup!
    Flower.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Complément de réponse
    Bonjour,

    J'ai exactement le même souci, je suis donc convaincu que la solution proposée me convient... pbm, bien que je maîtrise relativement bien excel, je n'ai jamais fait de code/ macro...
    Pouvez-vous me décrire les étapes (si simple et rapide) pour créer ce code sur mon TCD?
    Merci!

    Jocelyn

  5. #5
    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 : 48
    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 et Bienvenue,
    Une petite remarque pour commencer, le fait de poser la question sur un ancien post limite le nombre de personne qui va lire ta question et donc la rapidité de réponse (et qualité).
    Donc pour les autres fois, il vaut mieux créer une discussion et, éventuellement, envoyer un message à une des personnes qui a participé à une discussion qui traite un problème similaire.

    Pour en revenir à:
    Citation Envoyé par g.jocelyn Voir le message
    ...
    Pouvez-vous me décrire les étapes (si simple et rapide) pour créer ce code sur mon TCD?
    ...
    Sur ton fichier, dans ta feuille qui contient ton TCD.
    Tu vas dans Outils/Macros/Enregistreur de macro
    Tu sélectionnes le champs sur lequel tu veux appliquer le tri et tu sélectionne un élement.
    Tu arrête l'enregistreur de macro
    Tu fais Alt+F11, tu seras alors dans VBA.
    Tu regardes le code qui s'afficher et qui résulte de ta manipulation, ce qui te permet de connaître le 'nom' de ton TCD et le 'nom' du champ à trier.
    Remplace "PivotTable1" et "Catégorie" par les noms de ton TCD dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveSheet.PivotTables("PivotTable1").PivotFields("Catégorie").AutoSort _
            xlAscending, "Catégorie"
    Reste maintenant à décider comment tu veux "lancer" la macro (bouton, activation de la feuille, si calcul dans la feuille,...)
    En espérant avoir été clair.

    A+

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci bcp pour ta réponse rapide et très claire... j'ai donc réussi à faire ma 1ère macro et cela résoud totalement mon pbm...
    Je note tes conseils pour mes prochains postes.
    Merci encore.

    Jocelyn

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    oups pardon, une petite question complémentaire par rapport à ta réponse à flower:
    "Si tu veux ordonner plusieurs champ tu dois les nommer ou tu peux très facilement faire une boucle sur tous les champs si tu veux qu'ils soient tous ordonnés."

    Comment faire cette boucle?

  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 : 48
    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
    Re,
    A mon avis tu vas vite pour une première macro
    Il y a plusieur type de boucle, dans ce cas une 'For each' fait l'affaire, par contre on passe par du dimensionnement pplus qu'obligatoire mais je te passe les explications...mais vas lire les tutos pour comprendre.

    Donc, essaies ce code (j'ai pas testé je le fais de mémoire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub BoucleFields()
     
    Dim pf As PivotField 'Dimensionne la variable pf comme objet PivotField
     
    For Each pf In ActiveSheet.PivotTables("PivotTable1").PivotFields 'Pour chaque PivotField du TCD
     
            ActiveSheet.PivotTables("PivotTable1").PivotFields(pf.Name).AutoSort _
                    xlAscending, pf.Name 'Action; donc tri
    Next pf 'passe au PivotField suivant
     
    End Sub
    La boucle va passer sur chaque PivotField de ton tableau, tu n'as qu'a adapter le nom de celui-ci ("PivotTable1") par le nom de ton tableau.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    J'ai essayé... et je te confirme que ta mémoire fonctionne parfaitement bien... j'ai l'impression de redécouvrir excel, j'imagine que les fonctionnalités de ces codes sont illimitées... à moi la découverte.
    Merci!

    Jocelyn

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

Discussions similaires

  1. [XL-2013] Power-Pivot : cacher les filtres d'un tableau croisé dynamique
    Par Mathsdeb dans le forum Excel
    Réponses: 2
    Dernier message: 21/06/2015, 12h10
  2. Réponses: 8
    Dernier message: 28/01/2015, 16h21
  3. Réponses: 1
    Dernier message: 05/07/2007, 18h28
  4. Réponses: 3
    Dernier message: 13/04/2007, 10h04
  5. [VBA-Excel] Faire un filtre dans un tableau croisé dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2006, 15h05

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