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 :

Manipuler les Slicers Via Vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Bonjour tout le monde,
    je dispose d'un classeur avec plusieurs pages et chaque page dispose de plusieurs slicer (un slicer par colonne pour environ 20 colonnes)
    Ce que je souhaite faire, c'est à l'aide du VBA, activer pour une page précise un slicer précis avec des valeurs précises.
    Pour l'instant quand j’exécute le code pas à pas, tout fonctionne jusqu’à la dernière étape ou à force de manipuler plusieurs slicers, ces derniers n'affichent pas exactement les bonnes lignes.
    C'est à dire pour un Slicer A, si l'item sélectionne vaut "A1", normalement il doit m'afficher que les lignes dont la valeur vaut "A1", mais ce dernier m'affiche même les lignes dont la valeur vaut "A2" (meme quand "A2".selected = false), ce bug m'arrive quand je manipule le slicer B

    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
                'Pour chaque slicer dans notre fichier excel
    For t = 0 To UBound(tableauParametreTri())           
     For Each oSlicercache In ThisWorkbook.SlicerCaches
                    If oSlicercache.ListObject.DisplayName = sht1.Name & "_Données_REVIT" Or _
                    oSlicercache.ListObject.DisplayName = sht1.Name & "_Données_Calculées" Then
                        'si notre slicer se trouve sur la bonne page (sht1 est le nom de la page voulu que j'ai renseigne auparavant)
                        'On prends le slicer correspondant à notre premier parametre
                        If oSlicercache.SourceName = tableauParametreTri(t) Then
    'tableauParametreTri est un tableau qui regroupe le nom des slicers
                            With ActiveWorkbook.SlicerCaches(oSlicercache.Name)
                                For K = 1 To .SlicerItems.Count
                                    If (.SlicerItems(K).Caption = tableau_split(t)) Then
                                        .SlicerItems(K).Selected = True
                                    Else
                                        .SlicerItems(K).Selected = False
                                    End If
                                Next K
                            End With
                            Exit For
                        End If
                    End If
                Next
    Next t
    Je sais pas si j'ai été vraiment claire, je reste à votre disposition pour toute clarification.
    Merci d'avance

    Je me trouve avec un bug comme ca
    Nom : Capture.PNG
Affichages : 3104
Taille : 8,8 Ko

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 557
    Par défaut
    Bonjour

    C'est quoi tableau_split(t) ?

    Comment est alimenté tableauParametreTri ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    TableauParametreTri est un tableau qui regroupe les entetes à chercher et donc les noms de mes slicers.
    Exemple, une des entetes à chercher sera "BY_IdNature" qui sera une case de TableauParametretri. je le remplie en brute directement dans ma fonction main, TableauParametreTri(0) = toto

    Tableau_Split est le parametre que je veux rendre visible dans le slicer, pour mon exemple, la case du tableau parametre split sera "Prefa Exterieure"

    Enfaite, je n'ai aucun probleme avec la selection des slicers.
    ce n'est qu'une fois que je quitte ce bout de code et que j'applique exactement le meme principe sur un autre slicer que "parfois", je dis bien parfois ce n'est pas toujours le cas, cela me creer ce bug que j'ai mis en photo au dessus

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 557
    Par défaut
    Re

    Pas avec la sélection de slicers mais avec celle des items apparemment...

    De façon générale on affiche tout avec ClearManualFilter puis on désélectionne les items non trouvés dans la liste des choix souhaités.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Juste avant ce code là j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        For Each Slcr In ThisWorkbook.SlicerCaches
            If Slcr.ListObject.DisplayName = sht1.Name & "_Données_REVIT" Or _
            Slcr.ListObject.DisplayName = sht1.Name & "_Données_Calculées" Then
                Slcr.ClearManualFilter
            End If
        Next
    Pour remettre à zero tout les slicers de ma page, et après pour chaque slicer, je selectionne/deselectionne ce que je veux, juste quelques fois y'a ce bug qui apparait, meme avec le debugger pas à pas je n'arrive pas à trouver pourquoi ca déconne

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 557
    Par défaut
    RE

    Dans ce cas la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .SlicerItems(K).Selected = True
    ne sert à rien puisque ClearManualFilter a déjà tout activé

Discussions similaires

  1. [AC-2010] Manipulation des "Grid" via VBA
    Par Damran dans le forum Access
    Réponses: 1
    Dernier message: 03/07/2013, 11h30
  2. manipulation de pdf via VBA
    Par yves fiallet dans le forum VBA Word
    Réponses: 4
    Dernier message: 27/08/2010, 13h37
  3. Manipuler les donnés via mes composants
    Par charrynsasi dans le forum JDBC
    Réponses: 3
    Dernier message: 09/06/2010, 15h27
  4. [PPT-2003] Manipulation de texte via VBA
    Par lecail65 dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 03/02/2010, 13h12
  5. Manipuler les Shapes par VBA Excel.
    Par Karimbon dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/10/2007, 18h37

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