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 :

Filtres automatiques sur TCD [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Gestionnaire de bases de données
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de bases de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut Filtres automatiques sur TCD
    Bonjour à tous,

    Je vous expose ma situation. Je souhaite actualiser tous mes TCD qui se situent dans plusieurs feuilles Excel. Ca, c'est OK.
    Ensuite, je souhaite leur appliquer à tous un même filtre. Ce filtre est contenu dans la cellule H18 de ma feuille "Utilisation" (c'est une liste déroulante dynamique qui vient prendre toutes les valeurs de la colonne A de cette même feuille, à l'exception de l'intitulé -> donc de A2 à Adernièreligne). Je souhaite décocher toutes les valeurs, sauf celle contenue dans la cellule H18 (l'utilisateur doit y sélectionner son site de production).

    Le problème :
    Sur mon 1er onglet contenant des TCD, c'est OK. Mais sur les suivants, la dernière valeur de ma colonne A est toujours prise dans le filtre. J'ai beau la changer, même manuellement, la dernière est toujours incluse dans le filtre. J'ai l'étrange impression que la 18ème valeur n'arrive pas à être décochée. Pour info, ma variable DerniereLigne est bien codée, un msgbox me donne bien la bonne valeur.

    Voici mon code :
    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
    Public Sub UpdateTCDNQO()
     
    Dim DerniereLigne As Long
    DerniereLigne = Worksheets("Utilisation").Range("A1048576").End(xlUp).Row
     
        Dim MyTCD As PivotTable
        Dim i As Integer
        For i = 1 To ActiveWorkbook.Sheets.Count
            For Each MyTCD In Worksheets(i).PivotTables
                MyTCD.RefreshTable
            Next
        Next i
     
      Dim j As Integer
      Dim k As Integer
        For j = 1 To ActiveWorkbook.Sheets.Count
            For Each MyTCD In Worksheets(j).PivotTables
            For k = 2 To DerniereLigne
            On Error Resume Next
                MyTCD.PivotFields("Libellé Site Préparation").PivotItems(Sheets("Utilisation").Range("A" & k).Value).Visible = False
            Next k
                MyTCD.PivotFields("Libellé Site Préparation").PivotItems(Sheets("Utilisation").Range("H18").Value).Visible = True
            Next
        Next j
     
    MsgBox "Données mises à jour pour votre site de préparation."
     
    End Sub
    Avez-vous une idée ?

    Merci beaucoup pour votre aide,

    Alexis

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    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 564
    Par défaut
    Bonjour

    Tes TCD sont-ils basés sur la même source de données ? Si oui, l'actualisation d'un seul suffit... De même un segment rattaché à tous les TCD suffirait à les synchroniser...

    En VBA, on ne manipule pas les cellules des TCD mais les items des pivotfields... Un TCD n'est un simple range dans un onglet mais iun objet bien particulier avec ses propres propriétés, méthodes, évènements...

  3. #3
    Membre du Club
    Homme Profil pro
    Gestionnaire de bases de données
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de bases de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Bonjour Chris, et merci pour ta réponse.

    Les TCD n'ont pas tous la même source. Enfin, les TCD d'un même onglet ont la même source, mais lorsque je passe à un autre onglet, la source change. Cependant, la liste des valeurs possibles pour mon filtre que je souhaite appliquer est, au maximum, la liste de ma colonne A.

    Je suis bien d'accord avec le fait de ne pas manipuler les cellules d'un TCD via VBA, il me semble d'ailleurs que ce n'est pas ce que je fais, puisque je "joue" avec le PivotField qui m'intéresse ("Libellé Site préparation").

    En espérant avoir été clair...,

    Alexis

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    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 564
    Par défaut
    RE

    De façon générale dans ce cas
    • il est plus simple d'associer un segment aux TCD et de synchroniser les segments plutôt que les pivotfields. J'ai donné des codes en ce sens en réponse à divers fils
    • dans les 2 cas (segment ou pivotfield), on commence par défiltrer le champ (ClearAllFilters) puis on masque items par items
    • ne prévoir qu'une actualisation par onglet pour alléger...


    Il convient aussi dans nombre de cas de s'assurer de la présence de la valeur de filtre dans les TCD : avec des sources différentes on a parfois des manquants...

  5. #5
    Membre du Club
    Homme Profil pro
    Gestionnaire de bases de données
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de bases de données
    Secteur : Santé

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Re, et à nouveau merci pour la réponse.

    Je suis finalement parti vers les segments, sans VBA...c'est encore + simple et pas beaucoup moins automatisé.

    Merci encore pour ton intérêt.

    Alexis

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/07/2011, 14h09
  2. filtre variable sur TCD
    Par FloFlosu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2011, 22h08
  3. Probleme Filtre automatique sur une plange variable
    Par Lucorah dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2010, 10h23
  4. Filtre automatique sur date défaillant
    Par cuterate dans le forum Excel
    Réponses: 2
    Dernier message: 18/08/2009, 15h47
  5. filtre automatique sur feuille protégée
    Par pat91 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/02/2008, 22h57

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