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 :

Filtre TCD via Listbox (choix multiples)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 69
    Par défaut Filtre TCD via Listbox (choix multiples)
    Bonjour,

    J'ai un fichier avec une base de donnée (très simplifié par rapport au fichier final)

    En Feuill3, j'ai un tableau croisé dynamique avec des filtres pour le rapport.

    J'aimerais à l'aide du bouton filtre via une liste déroulante, sélectionner plusieurs valeurs (départements). En fonction des sélections, agir sur le champ du rapport du TCD en B1.

    Vous allez me dire que c'est faisable en faisant une sélection multiples en B1 mais ce n'est pas ce que je recherche car mon fichier final est basé sur un formulaire à remplir.

    Je bloque sur cette éventuelle fonction VBA.

    J'ai cru voir qu'on pouvait utiliser la fonction PivotTables

    Merci pour votre retour
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 69
    Par défaut
    Une solution que j'ai adapté en recherchant sur internet

    Voir pj


    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub CommandButton1_Click()
     
     
    Dim I As Integer, y As Integer
    Dim pi As PivotItem
    Dim pt As String
    Dim feuille As Worksheet
     
    Application.ScreenUpdating = False
     
    'On récupere les données séléctionnées dans la listbox
     
    Range("D1:D20").ClearContents
     
    With Me.ListBox1
    For I = 0 To .ListCount - 1
    If .Selected(I) = True Then
    y = y + 1
    Range("D" & y).Value = .List(I)
    End If
    Next I
    End With
     
    'On filtre le rapport via les données récupérées en colonne D
     
    Set feuille = Worksheets("Feuil3")
     
    pt = "TCD" 'nom du TCD
    With feuille.PivotTables(pt).PivotFields("D")
        .EnableMultiplePageItems = True
        .CurrentPage = "(All)"
        .AutoSort xlAscending, "D"
    End With
     
    With Worksheets("Feuil3")
            For Each pi In feuille.PivotTables(pt).PivotFields("D").PivotItems
                On Error Resume Next
                If .Range("D1:D" & .Range("D" & Rows.Count).End(xlUp).Row).Find(pi, LookIn:=xlValues, LookAt:=xlWhole).Row > 0 Then
                    If Err = 0 Then
                        pi.Visible = True
                    Else: pi.Visible = False
                    End If
                End If
            Next pi
    End With
     
    For H = 0 To Me.ListBox1.ListCount
         Me.ListBox1.Selected(H) = False
    Next H
     
    UserForm1.Hide
     
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    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

    PivotTables n'est pas une fonction mais juste l'appelation des TCD.

    Ne pas vouloir passer par les possibilités natives du TCD (segments notamment à partir de 2010), nécessite de vérifier que les valeurs sélectionnées existent dans la source avec de faire par VBA l'équivalent de la multisélection en B1, multisélection qu'il faut donc activer.

    Il y a pas mal d'exemples si tu recherches dans ce forum.

    Edit : nos post se sont croisés. Assure-toi de l'existence des valeurs de la colonne D dans la source sinon cela plantera.

    Edit 2 : j'ai vu que tu partais du TCD pour contrôler donc c'est bon.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/06/2016, 19h38
  2. Réponses: 4
    Dernier message: 31/05/2016, 22h06
  3. Réponses: 2
    Dernier message: 10/03/2016, 13h58
  4. [Strut2] formulaire avec liste déroulante à choix multiple
    Par cartman97 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 09/08/2011, 10h00
  5. Réponses: 0
    Dernier message: 09/03/2009, 19h01

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