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 :

Macro filtrer TCD en fonction de differentes cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut Macro filtrer TCD en fonction de differentes cellules
    Bonjour,

    J'ai trouvé cette macro qui permet de filtrer un TCD en fonction d'une valeur dans une cellule.

    J'aimerais pouvoir dupliquer ce code pour pouvoir avoir 6 cellules qui déterminent la valeur 6 filtres différents du même TCD (chaque cellule choisit la valeur dans un filtre avec un nom unique)

    La valeur de Cellule C4 determine le filtre Accounting Responsible

    La valeur C7 détermine le filtre Sales

    ETC...

    Ce ne doit pas être cumulatif mais un traitement indépendant de chaque filtre.

    Je suis bloqué et j'ai vraiment besoin de votre aide

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim xPTable As PivotTable
        Dim xPFile As PivotField
        Dim xStr As String
        On Error Resume Next
        If Intersect(Target, Range("C4")) Is Nothing Then Exit Sub
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("Accounting Responsible")
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
    End Sub
    Merci beaucoup !!

  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

    Pourquoi ne pas utiliser tout simplement des segments ?

    Tu dit "non cumulatif" : c'est à dire qu'il faut désactiver tous les filtres avant d'appliquer le dernier choisi.

    ClearAllFilters doit s'appliquer au TCD pas au champ dans ce cas

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Yes exactement : Tu dit "non cumulatif" : c'est à dire qu'il faut désactiver tous les filtres avant d'appliquer le dernier choisi

    Que veux tu dire par. Segment? Sorry mais je débute en vba... peux tu stp me. Montrer le. Schéma en code ?
    Merci bcp pour ton aide !!

  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

    Les segments (slicers) ce n'est pas du vba mais une façon de filtrer d'un clic un TCD et/ou GCD voir plusieurs s'il sont la même source.

    mais ils sont par défaut cumulatifs.

    Pour le VBA je t'ai donné la réponse "ClearAllFilters doit s'appliquer au TCD pas au champ"

    donc remplace xPFile.ClearAllFilters par xPTable.ClearAllFilters

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Re

    Ok pour le xPFile.ClearAllFilters par xPTable.ClearAllFilters

    En revanche, la solution avec les slicers ne convient pas malheureusement parce que cumulatifs...

    et c'est justement ce que je n'ai pas réussi a faire en VBA, parce que lorsque je rajoute les différentes cellules et nom de filtres cela cumule :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("C4,...,...")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
    Set xPFile = xPTable.PivotFields("Accounting Responsible")
    Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
    Set xPFile = xPTable.PivotFields("Sales")
    .....
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
     
    End Sub

    Merci !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Hello,

    Voici le code que j'ai tenté mais cela ne fonctionne pas... Quelqu'un peut il m'aider ?

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim xPTable As PivotTable
        Dim xPFile As PivotField
        Dim xStr As String
        On Error Resume Next
        If Intersect(Target, Range("C4")) Is Nothing Then
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("Accounting Responsible")
        xStr = Target.Text
        xPTable.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
        ElseIf Intersect(Target, Range("C7")) Is Nothing Then
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("Vendor")
        xStr = Target.Text
        xPTable.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
        ElseIf Intersect(Target, Range("C10")) Is Nothing Then
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("Line Manager")
        xStr = Target.Text
        xPTable.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
        ElseIf Intersect(Target, Range("C13")) Is Nothing Then
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("Sales Director")
        xStr = Target.Text
        xPTable.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
        ElseIf Intersect(Target, Range("C16")) Is Nothing Then
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("CFO")
        xStr = Target.Text
        xPTable.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
        ElseIf Intersect(Target, Range("C19")) Is Nothing Then
        Application.ScreenUpdating = False
        Set xPTable = Worksheets("Share your comments here").PivotTables("PivotTable1")
        Set xPFile = xPTable.PivotFields("CEO")
        xStr = Target.Text
        xPTable.ClearAllFilters
        xPFile.CurrentPage = xStr
        Application.ScreenUpdating = True
     
        End If
     
     
    End Sub

Discussions similaires

  1. Macro filtre TCD en fonction du n° de semaine
    Par madock dans le forum Excel
    Réponses: 4
    Dernier message: 24/06/2016, 15h31
  2. lancer une macro en fonction si une cellule est vide ou non
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2011, 14h12
  3. lancer une macro en fonction si une cellule est vide ou non
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/11/2011, 10h01
  4. Filtrer plusieurs TCD en fonction d'une seule cellule à modifier
    Par marie.l dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/07/2010, 15h29
  5. TCD actualisee en fonction d'une cellule
    Par athos7776 dans le forum Excel
    Réponses: 4
    Dernier message: 12/09/2008, 17h59

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