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 :

PivotTable Slicers et macro [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut PivotTable Slicers et macro
    Bonjour,

    J'utilise un TCD avec des slicers pour restreindre l'affichage et j'aurais deux questions concernant la manipulation des slicers par macro.

    1) Peut-on récuper le nombre d'item selectionnés dans un slicers?

    2) Peut-on choisir la selection par macro?
    j'ai essayé avec l'enregistreur de macro, mais il me recopie toute ma la liste d'item avec selected = true ou false, mais j'aimerais ne pas avoir a recopier toute la liste si c'est possible
    par exemple dire le "a" et le "c" true le reste false


    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Point 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SlicerCaches(1).VisibleSlicerItems.Count
    Pour le point 2, je te conseil un coup d'enregistreur de macro Tu aura la réponse.

    Edit : Point 2, il n'est pas possible dans un slicer de n'en avoir aucun de sélectionner puis d'en sélectionner un.
    Donc l'idée est d'itérer les SlicerItems en désélectionnant ce que tu ne veux pas, genre ceci :
    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
    Sub test()
        Dim sl As SlicerCache
        Dim sli As SlicerItem
     
        Set sl = ActiveWorkbook.SlicerCaches("SlicerName")
     
        sl.ClearAllFilters
     
        For Each sli In sl.SlicerItems
            If sli.Name = "A" Or sli.Name = "B" Then
                sli.Selected = True
            Else
                sli.Selected = False
            End If
        Next
    End Sub
    A adapter ensuite avec un tableau pour passer les valeurs à sélectionner

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Merci de répondre si vite

    Avec ton code j'obtient l'erreur "invalid use of property"
    De plus comme j'ai plusieurs slicer j'aimerais l'appeler par son prénom suffit il de remplacer SlicerCaches(1) par SlicerCaches("prénom")?

    pour le point j'ai édité mon premier post pendant que répondait, j'ai essayer l'enregistreur de macro mais la sortie qu'il me donne ne me semble pas automatisable.
    en fait je pense qu'il faurait une boucle sur tous éléments du slicers et avec un if choisir si on met true ou false, mais je ne sais pas comment lui dire de boucler sur les elements du slicer

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    J'ai éditer ma réponse précédente

    Oui tu peux appeler les Slicer par le petit nom

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Merci encore

    il ne veut pas toujours pas ".count"
    idem pour la boucle il bloque au "sl.ClearAllFilters"
    Toujours avec le même message "invalid use of property"

    Je suis sur Excel 2010, est-il possible que ce soit un problème de version?

    edit: si j'enlève la ligne qui pose problème la macro avec la boucle s'exécute sans râler et donne le bon résultat

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Arf, je suis en XL2k16
    Je n'ai pas de 2k10 pour tester, il est possible que cette propriété n'existais pas.

    Edit : Confirmer sur MSDN Visiblesliceritems est apparu avec Excel 2k13
    Tu peux le faire toi même avec le même principe que la boucle du coup.
    Tu compte le nombre qui sont en Selected True:
    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
    Sub test()
        Dim sl As SlicerCache
        Dim sli As SlicerItem
        Dim nbSliVisible As Integer
     
        Set sl = ActiveWorkbook.SlicerCaches("SlicerName")
     
        For Each sli In sl.SlicerItems
    		If sli.Selected Then
    			nbSliVisible = nbSliVisible + 1
    		End If
        Next
     
        Debug.print "Il y a " & nbSliVisible & " sliceritems Visible" 
    End Sub

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

Discussions similaires

  1. Déclencher une macro par la modification d'un segment (slicer)
    Par Fabert dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/01/2016, 08h35
  2. [E-03] - pivottable dans une macro
    Par jmh51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2008, 19h42
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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