filtre automatique TCD

moi60

XLDnaute Junior
Hello le forum,

J'ai de nouveau un petit problème,

En effet, j'ai un tableau croisé dynamique avec des dates et je voudrais faire une sélection automatique de mes dates selon l'entrée d'une textbox d'un de mes userform.

J'espère être clair, donc voici mon code :
Code:
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Day"). _
        CurrentPage = "(All)"
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Day")
    For Each p In Feuil2.PivotTables("Tableau croisé dynamique1").PivotFields("Day").PivotItems
        p.Visible = True

    Next p
    For Each p In Feuil2.PivotTables("Tableau croisé dynamique1").PivotFields("Day").PivotItems
        If p.Value > TextBox1.Value Then p.Visible = False
    Next p

    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Day"). _
        EnableMultiplePageItems = True

Il me dit erreur d'éxécution 1004 : impossible de définir la propriété visible de la classe PivotItem.

Il beug donc à la ligne "p.Visible = True"

Quelqu'un peut m'aider ?

Merci d'avance,

Fab'
 

MJ13

XLDnaute Barbatruc
Re : filtre automatique TCD

Bonjour Moi60, Pierrot

Bon, comme le sujet m'intéresse, j'ai voulu voir pouquoi et il semble qu'il faille définir la date comme un texte. Voir le fcihier joint en remplaçant la colonne 1 par chaque colonne de gauche puis tester les 2 macros.

Si vous avez des idées :confused:, cela m'intéresse. Mais chose bizarre, en rouvrant les fichiers, il n' y a plus de problèmes :confused::confused:, quelque soit le foramt de la colonne1. Faut t'il donc fermer Excel entre 2 TCD ;).

Ah mais en fait si on actualise le TCD, le bug reviens :confused::confused::confused:.
 

Pièces jointes

  • TCD_Extrait_Page_Critere.xlsm
    20.1 KB · Affichages: 78
  • TCD_Extrait_Page_Critere.xls
    51.5 KB · Affichages: 60
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : filtre automatique TCD

Re, bonjour Michel:)

chez moi les 2 macros du fichiers xls provoquent une erreur... mais bon, normal puisque même manuellement je n'arrive pas à l'utiliser, message d'erreur comme quoi le tcd a été créé avec une version ultérieure, fermé le fichier et rouvrir avec la bonne version....

bon après midi
@+
 

MJ13

XLDnaute Barbatruc
Re : filtre automatique TCD

Re

Merci Pierrot pour le test.

Bon il y a comme un bug sur XL2007 avec les dates, car si on mets des quotes, cela à l'air de fonctionner.

Peut-être transformer chaque date dans une colonne de plus en rajoutant un quote ('), sinon mystère :confused::confused:
 
G

Guest

Guest
Bonjour tous,

Après maints essais et maintes recherches, j'ai trouvé une solution qui semble fonctionner:
Mettre le champ "Day" du tcd en format "dd mm yyyy" (avec espace comme séparateur de caratère et non le traditionnel "/")

Les étiquettes seront classées en ordre alpha numérique (05 07 2011 en fin de liste)

Ensuite la macro:

Code:
Private Sub CommandButton10_Click()
    Dim p As PivotItem
    Dim bVisible As Boolean
    Dim i As Integer
 
    'Vérifier que textbox1 est bien une date
    If Not IsDate(TextBox1.Text) Then Exit Sub
 
    'to confirm the choice and filter the data base
    With ActiveSheet.PivotTables("Tableau croisé dynamique1")
        'Empêche la présence d'ancien éléments (dates) n'existant plus dans la base
        .PivotCache.MissingItemsLimit = xlMissingItemsNone
        .PivotCache.Refresh
        .ManualUpdate = False
 
        With .PivotFields("Day")
            .EnableMultiplePageItems = True
            For Each p In .PivotItems
                'Tester si le caption de l'item peut être reconnu comme date par vb
                'utile si présence de l'item "(vide)"
                If IsDate(p.Caption) Then
                    'Item visible si la date est strictement inférieure à celle du textbox
                    p.Visible = (CDate(p.Caption) < CDate(TextBox1.Text))
                End If
            Next p
        End With
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Day"). _
            EnableMultiplePageItems = True
    Unload filterDate
    Application.ScreenUpdating = True
End Sub

A+ tous

P.S. quelqu'un pourrait me dire pourquoi le forum est en anglais aujourd'hui (ma timezone est correcte dans mon profile) ?
 
Dernière modification par un modérateur:

moi60

XLDnaute Junior
Re : Re: filtre automatique TCD

Merci tout le monde de vous penchez sur mon cas,

Hasco, je m'excuse, mais le problème y est toujours, à la ligne p.Visible = (CDate(p.Caption) < CDate(TextBox1.Text))
Il me dit que p.Visible= <Incompatibilité de type>

Avec Excel 2010, cela me fait parreil, je me demande donc si c'est vraiment possible de faire ca avec Excel 2007 et plus ...

Merci beaucoup,

Fab'

EDIT: enfaite, le fichier que tu m'a donnée fonctionne correctement, mais quand je copie/colle le code dans mon fichier d'origine, là il beug...

EDIT2: Enfaite ca fonctionne, j'avais mal changer le format jj/mm/aaaa je l'avais changer dans le format de la cellule et non dans le paramètre de champs!

Merci beaucoup !
 
Dernière édition:

moi60

XLDnaute Junior
Re : filtre automatique TCD

Comment puis-je faire pour tester si un pivotitem existe ? Je voudrais rajouter le choix de la press automatiquement par un choix dans une combobox. Par exemple, si je choisi PRESSE 1 dans ma combobox, il me sélectionne PRESSE1 dans le pivotitems. Le probleme est que la PRESSE1 peut ne pas encore exister dans la liste des données, donc ne sera pas dans le pivotitems et donc beuggera...

Voici mon code pour l'instant,

Code:
If ComboBox1.Value = "presa 1" Then
    Sheets("Feuil2").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Presa"). _
        CurrentPage = "(presa 1)"
            End If[\CODE]
Je fais ce test pour tous les numéros de presses (il y en a 9) ainsi que pour le choix TOUTES

Merci de votre aide,

Fab'
 

Pierrot93

XLDnaute Barbatruc
Re : filtre automatique TCD

Bonjour moi, Hasco:)

regarde ceci, à adapter :
Code:
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Presa")
    For Each p In .PivotItems
        If p.Value = "presse machin" Then MsgBox "ok, existe"
    Next p
End With

bonne journée
@+
 

moi60

XLDnaute Junior
Re : filtre automatique TCD

Nickel, sa fonctionne !

Merci beaucoup,

J'ai une autre question qui n'a rien a voir avec les tcd,

J'ai 2graphiques avec dessus des boutons pour pouvoir revenir au menu, le problème est que c'est boutons bougent tout seul de facon anarchique, et parfois se déforme...

J'ai bien changé dans format de controle les parametre (j'ai vérouillé et cocher ne pas dimensionner avec le graphique) mais rien n'y fait ...

Avez-vous une idée?

Merci d'avance,

Fab'
 

Discussions similaires

Statistiques des forums

Discussions
312 509
Messages
2 089 145
Membres
104 050
dernier inscrit
Pepito93100