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 :

Coder des une liste de choix multiples pour Tableaux croisés


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Points : 66
    Points
    66
    Par défaut Coder des une liste de choix multiples pour Tableaux croisés
    Bonjour,

    J'utilise un classeur Excel 2003 qui contient une multitude de tableaux croisés auxquels je dois changer souvent les listes de choix.

    Comme les critères de choix sont identiques à tous les tableaux, j'avais pensé à écrire un code qui :

    1- va attraper sur une feuille "Selection" dans des cellules bien précises les valeurs à filtrer

    2- va rafraichir tous les tableaux

    Pour la phase 2, j'ai trouvé quelque chose qui marche bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Rafraîchit les TCD()
     
    Dim pt As PivotTable
    Dim ws As Worksheet
     
        For Each ws In ActiveWorkbook.Worksheets
            For Each pt In ws.PivotTables
                        pt.RefreshTable
            Next pt
        Next ws
    End Sub
    Par contre je ne sais pas trop quoi faire pour mettre à jour les listes de choix, sachant que la liste de sélection se trouve sur une feuille bien précise et qu'il peut y avoir des choix multiples pour un seul critère.

    Je crois qu'il faut utiliser Pivotfield mais je ne sais pas trop comment l´intégrer dans ce code. Sur Google, j'ai rien trouvé de bien convaincant, ni tutoriel ici.

    Si quelqu'un peut m'aider, merci mille fois!
    MS Excel 2007
    MS Access 2003
    SQL Server Express 2008 R2

  2. #2
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour piflechien,

    Le problème c'est que le filtre sur un champ d'un TCD s'écrit différemment en fonction de la position du champ dans le TCD
    As-tu essayé d'enregistrer une macro puis de filtrer un TCD pour voir le code généré ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Points : 66
    Points
    66
    Par défaut
    Hello,

    un consultant m'a donné la solution et je tiens à vous en faire profiter

    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
     
    Sub filterPivot()					
    Application.ScreenUpdating = False					
    Dim Critere As String					
    Dim pt As PivotTable, pi As PivotItem					
     
     
    Worksheets("Feuille1").Select					
     
        On Error Resume Next					
       Critere = CStr(Worksheets("Feuille1").Range("B1").Value)	
        '*************************************************
        'Critère est ce qui va être dans le filtre du tableau croisé				
        'B1 est la coordonnée du critère mis dans le filtre du tableau croisé
        '**************************************************
        Set pt = ActiveSheet.PivotTables("PivotTable12")	
        '*****************************************************
        '"PivotTable12" est le nom du tableau croisé ( dans "options")	
        '*****************************************************	
        pt.PivotFields("Feuille1").ClearAllFilters					
        pt.PivotFields("Feuille1").CurrentPage = Critere					
     
        Application.ScreenUpdating = True					
    End Sub
    MS Excel 2007
    MS Access 2003
    SQL Server Express 2008 R2

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

Discussions similaires

  1. [WD-2010] Comment insérer une liste déroulante à choix multiple
    Par djibril dans le forum Word
    Réponses: 10
    Dernier message: 18/06/2019, 14h21
  2. Creation d'une liste a choix multiple
    Par d_hazem dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/04/2009, 14h53
  3. actualisation des cellules a partir d'une liste de choix multiples
    Par crachzero dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2008, 20h42
  4. Réponses: 3
    Dernier message: 15/05/2006, 16h09
  5. formulaire avec une liste a choix multiples
    Par pogy dans le forum Langage
    Réponses: 22
    Dernier message: 03/05/2006, 00h12

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