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 :

problème slicer vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé de mission
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de mission

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut problème slicer vba
    Bonjour,

    J'ai une feuille disposant de plusieurs tcd que souhaiterai que l'utilisateur final puisse mettre à jour grace à des segments. Je voudrais que l'utilisateur final ne puisse choisir qu'une seule option dans le segment et c'est la que les choses se gâtent. j'ai essayé de trouver dans les paramêtres du segments dans excel, cette option ne semble pas prévue. je me suis donc tourner vers le VBA, ou je suis confronté à un autre problème.
    Je définis une variable "as SlicerCache" que j'incrémente avec mon segment. Cependant quand je regarde les propriétés de ma variable elle retourne nombre d'erreurs. ex:" Sliceritems : erreur définie par l'application" et donc je n'arrive pas à agir dessus comme je veux.

    Auriez vous une idée ?

    Je précise que j'ai vérifié que la propriété OLAP de ma variable soit bien à VRAI.

    D'ordinaire grace à l'aide de votre forum je trouve toujours la solution à mon problème mais la je sèche.

    PS : je voulais ajouter les parties mon code au message pour être plus clair mais je ne sais pas comment.

    D'avance merci.

    Cordialement,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cadaver Voir le message
    Bonjour,

    Sauf erreur de ma part, si le champ en question est dans la partie Page, votre segment ne peut faire varier qu'une seule valeur à la fois.

  3. #3
    Membre averti
    Homme Profil pro
    Chargé de mission
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de mission

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut
    Bonjour, merci de prendre le temps de me répondre.
    Je suis d'accord avec vous sauf quand l'utilisateur clique sur "effacer les filtres", la tout le segment est sélectionné.
    De plus j'aimerai vraiment comprendre pourquoi ma variable retourne des erreurs sur la plupart de ses champs car en parallèle j'aimerai réussir à récupérer le nom de l'item sur lequel l'utilisateur clique.

    Cordialement,

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cadaver Voir le message
    Bonjour, merci de prendre le temps de me répondre.
    Je suis d'accord avec vous sauf quand l'utilisateur clique sur "effacer les filtres", la tout le segment est sélectionné.
    De plus j'aimerai vraiment comprendre pourquoi ma variable retourne des erreurs sur la plupart de ses champs car en parallèle j'aimerai réussir à récupérer le nom de l'item sur lequel l'utilisateur clique.
    J'ai repris un fichier avec un TCD et des segments dont le SlicerCache.Olap est Faux.
    Pièce jointe 519868

    J'ai créé deux fonctions volatiles pour déterminer l'item sélectionné dans un des segments (H2) et le nombre d'items sélectionnés (I2).
    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
     
     
    Function MonSlicerItem(ByVal NomDuSegment As String) As String
     
    Dim I As Integer
     
        Application.Volatile
     
        MonSlicerItem = ""
        With ActiveWorkbook.SlicerCaches(NomDuSegment)
             For I = 1 To .SlicerItems.Count
                 If .SlicerItems(I).Selected = True Then MonSlicerItem = .SlicerItems(I).Name
             Next I
        End With
     
    End Function
     
     
     
    Function NbSlicerItem(ByVal NomDuSegment As String) As Integer
     
    Dim I As Integer
     
        Application.Volatile
     
        NbSlicerItem = 0
        With ActiveWorkbook.SlicerCaches(NomDuSegment)
             For I = 1 To .SlicerItems.Count
                 If .SlicerItems(I).Selected = True Then
                     NbSlicerItem = NbSlicerItem + 1
                 End If
            Next I
        End With
     
    End Function
     
    Function SourceOlap2(ByVal NomDuSegment As String) As Boolean
     
        With ActiveWorkbook.SlicerCaches(NomDuSegment)
            SourceOlap2 = .OLAP
        End With
     
    End Function
    Dans le cas où tout est déselectionné, I2 passe au dessus de 1 et l'événement Worksheet_Change remet la sélection sur le premier item. A voir si c'est possible avec une source de type OLAP.
    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim I As Integer
     
            If Range("I2").Value > 1 Then
               Application.EnableEvents = False
                With ActiveWorkbook.SlicerCaches("Segment_Directeur")
                     For I = .SlicerItems.Count To 2 Step -1
                         If .SlicerItems(I).Selected = True Then .SlicerItems(I).Selected = False
                     Next I
                End With
                Application.EnableEvents = True
                Exit Sub
           End If
     
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Chargé de mission
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de mission

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut
    Bonjour,
    Une donnée que je ne pensais avoir à preciser mais qui a peut être son importance est que les données constituant mes TCD ne viennent pas d'une feuille de données mais d'une base powerpivot. En cherchant sur le forum je crois comprendre que mon souci viendrait de la. Je continue de chercher car pour l'instant je suis toujours dans le brouillard.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cadaver Voir le message
    Avez-vous essayé la méthode proposée au moins ?

Discussions similaires

  1. Problème sql vba access
    Par aaliyan dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 30/04/2007, 14h02
  2. Problème EXCEL VBA
    Par olivierm34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/03/2007, 23h52
  3. Problème valeurs[VBA]
    Par Yanmeunier dans le forum Access
    Réponses: 1
    Dernier message: 18/05/2006, 15h17
  4. Problème de VBA de passage de 2000 à 2002
    Par Oberown dans le forum Access
    Réponses: 9
    Dernier message: 10/05/2006, 14h51
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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