Filtrer TCD en fonction d'une cellule

Bonjour

Beaucoup de réponses sur les forum mais je n'arrive pas a adapter à mon cas tout simple pourtant.

Donc voila mon besoin :

j'aimerais filtre un TCD en fonction d'une valeur dans une cellule. CF mon fichier Test

Le filtre du TCD est le Jour et la cellule est la G1 . Dans cette cellule il y a une fonction qui affiche la date du jour sur le format date

1-Mars alors que dans ma table source du TCD le format 1-Mars est du Standard (pas une date).

Je souhaite que lorsque on accède à la feuille 2 ou se trouve le TCD et qu'on active une Macro, le TCD s'actualise en fonction de la date écrite dans la cellule G1.

Que faut il comme VBA dans l'Objets de Feuill2 et dans un module pour déclencher volontairement la mise a jour

Merci

159test.xlsx (86.43 Ko)

Bonjour,

Une proposition à étudier.

L'actualisation du TCD s'effectue à l'activation de la feuille avec le filtre à la date du jour.

Cdlt.

365benjy555.xlsm (26.16 Ko)
Private Sub Worksheet_Activate()
Dim strDate As String
    strDate = Format(Date, "d-mmm")
    Me.PivotTables(1).PivotFields("Jour").CurrentPage = strDate
End Sub

Merci jean Eric

effectivement ta solution fonctionne .

J'en profite pour généraliser ma demande : mettons que la case directrice ne contient pas une date mais une valeur ou un texte, peu importe... A quoi ressemblerait le code VBA si on voulait simplement dire au filtre du TCD de réagir en fonction de ce qui est écrit dans la cellule ? comme si on utilisait l'option "contient" quand on filtre manuellement ce qui m’éviterai d'avoir a taper exactement le mot précis et donc aller plus rapidement.

Merci beaucoup

Bonjour,

Précise ta demande avec un fichier représentatif de tes données.

Cdlt.

Bonjour

Voici le mm fichier modifié

Mettons que je suis sur la feuille 2

Je souhaite taper en cellule G1 le début ou une partie d'un des champs compris dans la liste des Nom. Ici exemple = "ale" et cela devra filtrer le champs Nom en trouvant tout seul "Alex".

Idéalement le filtre se lance uniquement lorsqu'on a fini de taper le mot en G1 et qu'on sort de la cellule

merci

183test.xlsx (74.06 Ko)

bonjour à tous

avec une colonne de pointage (qui met un 1 si vrai)

essaye de modifier G1, il suffit d'un morceau du nom (en n'importe quelle position), puis d'actualiser le TCD.

327copie-de-test-27.xlsx (82.56 Ko)

salut jmd

je vois ou tu veux en venir mais je cherche une macros, a vrai dire c'est simplement une variante du code mentionné plus haut mais qui est plus général (pas seulement lié à la date du jour).

ce code observe simplement ce qui est inscrit dans la cellule G1 et des qu'on y rentre une portion de mot, le filtre du TCD réagit en fonction.

A vrai dire j'avais précisément cela dans un fichier sur un précédent travail donc je sais que c'est possible mais évidement je n'ai plus accès à ce fichier.

merci

Bonjour,

Un début de réponse à adapter.

Cdlt.

597benjy555-v1.xlsm (26.26 Ko)

salut

voila c'est exactement cela merci

j’espère que j'arriverai à l'adapter maintenant...

deux précisions :

-d'ou vient le "me" devant pivoTable(1) sur la ligne Set pt = Me.PivotTables(1)

en général on trouve : ActiveSheet.PivotTables("Tableau croisé dynamique1")

-et à quoi correspond l'expression ou la fonction "Handler" ?

merci

Bonjour,

Recopie la pocédure en lieu et place dans ton fichier.

Le ode est commenté.

Cdlt.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'Initialisation variables
Dim pt As PivotTable

    If Target.Address = "$G$1" Then
        'Initialisation des variables
        'Me = ActiveSheet
        'Pas nécessaire de nommer le TCD, puisqu'il est unique dans la feuille
        Set pt = Me.PivotTables(1)
        With pt
            'Supprime tous les filtres
            .ClearAllFilters
            'Si Target="" Excel génère une erreur
            On Error GoTo err_Handler
            'Ajout nouveau filtre suivant Target
            .PivotFields("Nom"). _
                    PivotFilters.Add _
                    Type:=xlCaptionContains, _
                    Value1:=Target.Value
        End With
    End If
'Fin de procédure normale
exit_Handler:
    'RAZ variables
    Set pt = Nothing
    Exit Sub
    'Gestion erreur
err_Handler:
    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description
    'Fin de procédure normale
    Resume exit_Handler

End Sub

merci pour les explications

Re,

Merci de clore le sujet.

Cdlt.

Rechercher des sujets similaires à "filtrer tcd fonction"