TCD Filtre de rapport Vba date du jour?
#1
Débutant XLPages

Inscription: 01/02/2012

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
EXCEL 2007
Posté le : 24-08-2012 12h11
Bonjour,

Je cherche à savoir s'il est possible de récupérer la date du jour(A1) dans un filtre de rapport d'un tableau croisé dynamique?


Je dois fournir des statistiques quotidiennes, est il possible que si je mets la date du jour en A1(aujourdhui() qu'il me mette les stats du jour? ça eviterait de selectionner la date à la main?

J'ai post une pièce jointe avec l'idée.

J'ai en faite trois onglets, stat jour semaine mois, apres s'il j'ai le code pour le jour je le developperais pour les autres onglets.

Pouvez vous me dire s'il s'est possible à faire, et si vous avez une piste?

Merci d'avance

Anthooooony



Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#2
Débutant XLPages

Inscription: 01/02/2012

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
EXCEL 2007
Posté le : 24-08-2012 12h11
Je n'arrive pas à mettre mon fichier en pièce jointe..
Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#3
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2012 13h29
Bonjour Anthooooony

Un petit essai en PJ avec un TCD, et ce code:
Option Explicit
Sub Macro1()
Dim MyDate As String, MyPVT As PivotItem
MyDate = Format(Date, "dd/mm/yyyy")

'Bloque l'actualisation écran
Application.ScreenUpdating = False
With Sheets("TCD")
    With .PivotTables("TCD1").PivotFields("Date")
        'Retire tous les filtres
        .ClearAllFilters
        'teste chaque item du champ Date
        For Each MyPVT In .PivotItems
            'Si est égal à date du jour il est visible
            If Format(MyPVT, "DD/MM/YYYY") = Format(Date, "DD/MM/YYYY") Then
                MyPVT.Visible = True
            Else
                'Si aucune donnée va sur Myerreur
                On Error GoTo Myerreur
                MyPVT.Visible = False
            End If
        Next MyPVT
    End With
End With

Exit Sub

'remet l'actualisation écran
Application.ScreenUpdating = False
Myerreur:
    'Retir les filtres
    Sheets("TCD").PivotTables("TCD1").PivotFields("Date").ClearAllFilters
    'Affiche une info
    MsgBox "Pas de données pour ce jour"

End Sub

Sub Macro2()
    'Retire tous les filtres
    Sheets("TCD").PivotTables("TCD1").PivotFields("Date").ClearAllFilters
End Sub
 

En espérant que cela pourra t'aider sur ton propre fichier,

Bonne journée,

mth

Pièce jointe:
zip Antho.zip   [ Taille: 75.42 Ko - Téléchargements: 805 ]
Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#4
Débutant XLPages

Inscription: 01/02/2012

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
EXCEL 2007
Posté le : 24-08-2012 15h22
Rebonjour

Merci pour ton retour détaillé.

J'ai réussi à l'adapter à mon tableau seulement je voulais savoir s'il était possible qu'au lieu que formule date du jour se fasse en code vba, qu'il se fasse en feuil1 cellule A1.

En faite si je te dis ça que, c'est que j'ai trois onglets jour semaine annee

la semaine dépend du jour grace à une recherchev et le jour depend d'une formule =aujourdhui() que j'aimerais pouvoir modifier.



Je n'ai toujours pas reussi à mettre mon fichier en pièce jointe je suis passé par le site cijoint
http://cjoint.com/?BHyphMuzhDj

peux etre comprendras tu davantage mon besoin.

Un grand merci

Anthony

Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#5
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2012 15h47
re,

Ton fichier allégé en PJ, et cette tentative de code prenant en compte la cellule A1:
Sub Macro1()
Dim MyDate As Date

With Sheets("Jour")
    MyDate = .Range("A1").Value
    With .PivotTables("Tableau croisé dynamique7").PivotFields("DOSSOPEN")
        .ClearAllFilters
        On Error GoTo Myerreur
        .CurrentPage = MyDate
    End With
End With

Exit Sub
Myerreur:
Sheets("Jour").PivotTables("Tableau croisé dynamique7").PivotFields("DOSSOPEN").ClearAllFilters

End Sub
 


(Je te remercie également de prendre connaissance de ce lien ...  : http://www.mdf-xlpages.com/modules/smartfaq/faq.php?faqid=57)

Bien à toi,

mth

Edit: Fvandermeulen est d'ailleurs de très bon conseil lorsqu'il t'oriente vers l'utilisation de l'enregistreur de macros ...
Pièce jointe:
xlsm Reporting(1).xlsm   [ Taille: 75.19 Ko - Téléchargements: 682 ]
Edité par Mth le 24/08/2012 16:31:17
Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#6
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2012 16h04
re

Comme la date est en A1, si tu as envie de modifier la date en mettant ton TCD à jour, essaie en adaptant comme ceci:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyDate As Date

If Target.Address = "$A$1" And Target.Count = 1 Then
    With ActiveSheet
        MyDate = .Range("A1").Value
        With .PivotTables("Tableau croisé dynamique7").PivotFields("DOSSOPEN")
            .ClearAllFilters
            On Error GoTo Myerreur
            .CurrentPage = MyDate
        End With
    End With
End If
Exit Sub
Myerreur:
ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("DOSSOPEN").ClearAllFilters
MsgBox "Pas de données pour cette date"
End Sub
 

Le code cette fois est à placer dans la feuille.
Sélectionne le nom de ton onglet, puis clic droit.
Dans le menu contextuel qui s'affiche, choisis "Visualiser le code", puis places le code à cet endroit.
Dans l'éditeur VBA, il ne sera pas placé dans un module, mais dans ta feuille "Jour"

@ +

mth

Pièce jointe:
xlsm Copie de Reporting(1).xlsm   [ Taille: 76.87 Ko - Téléchargements: 641 ]
Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#7
Débutant XLPages

Inscription: 01/02/2012

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
EXCEL 2007
Posté le : 24-08-2012 16h43
c'est génial wouauuuu lool merci tu assures ! j'en suis à trois jours de recherche j'étais à cours de motivation !!


Merci je suis en train de développer le code pour qu'il soit compatible avec l onglet jour comme tu as fait, mais aussi avec l'onglet semaine et mois.
L'idée est qu'avec la date mise dans le premier onglet les autres tableaux se mettent à jour.

Je le posterais pour ceux que ça pourrait intéresser des que j'ai fini!

Merci encore Mth



Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#8
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2012 16h55
re,

Je le posterais pour ceux que ça pourrait intéresser des que j'ai fini!
 

Merci pour ton retour anthooooony, et n'hésite pas à poster ton travail, tu es sur un sujet qui intéresse beaucoup de gens et je suis sûre que ce que tu feras pourra aider d'autres forumers.

Bon courage pour la suite et à bientôt,

mth
Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#9
Débutant XLPages

Inscription: 01/02/2012

Messages: 6

Système d'exploitation:
PC
Version Excel utilisée:
EXCEL 2007
Posté le : 24-08-2012 17h38
Bonjour,

Ce fichier a été conçu pour fournir un reporting quotien à mon supérieur hierarchique. Il doit se rendre compte des taches faites par ces équipes par jour.

Nous avons crée une base access sur laquelle est enregistrée notre travail. Excel récupère en temps réel les infos.


Contenu

Mon fichier est composé de 5 onglets,
- Jour (date du jour en formule aujourdhui() soit en la marquant à la main)
- Semaine Recherchev de la date du jour exemple aujourdhui "semaine 34 "
- Mois Recherchev de la date du jour exemple aujourdhui 24/08/2012 "Aout"
- Table celle avec les jours semaine mais vous pouvez mettre ce que vous souhaitez
- Bdd j'ai mis bdd pour qu'on m'aide mais dans mon cas concret elle pointe directement sur un table.


Utilisation:
(Je n'ai pas encore trouvé comment à partir de la feuille "jour" activer toutes autres feuilles) En attendant, pour activer et rendre actif votre tableau croisé dynamique veuillez cliquer à chaque entrée dans une feuille 2X sur la cellule A1.
Celle-ci récupèra la date choisie et rendra actif le graphique en dessous.

Je n'ai pas réussi non plus à rendre le fichier moins lourd que 80Ko pour cette raison le fichier se trouve sur le site cijoint mais qui ne sera disponible que pendant 60 jours.
http://cjoint.com/?BHyryzm0RSy

En esperant que ce travail puisse être utilise à vous cher forumeur.

Bonne soirée et bon week end.

Anthooooony

Hors Ligne
Rapport   Haut 

Re: TCD Filtre de rapport Vba date du jour?
#10
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2012 22h26
Bonsoir Anthony, bonsoir à tous,

Merci pour ton partage. Si je puis me permettre quelques compléments:

Onglet Semaine cellule A1:, cette formule (il me semble qu'elle est de Laurent Longres à l'origine) permettant d'avoir le numéro de semaine à notre norme à partir de la date saisie dans l'onglet Jour cellule A1:
=SI(Jour!A1=0;0;ENT(MOD(ENT((Jour!A1-2)/7)+3/5;52+5/28))+1)

En cellule A1 de l'onglet "mois" pour avoir le mois correspondant à la date saisie au même endroit dans l'onglet "jour":
=SI(Jour!A1=0;"";TEXTE(Jour!A1;"mmmm"))
(à mettre au format personnalisé "mmmm")

Dans la base "bdd" formule pour la colonne Mois:
=TEXTE(Tableau2[[#Cette ligne];[DOSSOPEN]];"mmmm")

formule pour la colonne année:
=ANNEE(Tableau2[[#Cette ligne];[DOSSOPEN]])

formule pour la colonne semaine:
=ENT(MOD(ENT((Tableau2[[#Cette ligne];[DOSSOPEN]]-2)/7)+3/5;52+5/28))+1

Formule pour la colonne Jour Semaine:
=TEXTE(Tableau2[[#Cette ligne];[DOSSOPEN]];"jjjj")

Ainsi l'onglet où tu fais tes calculs pour obtenir tout ça devient inutile.

Pour le code dans un module standard, cette proposition:
Option Explicit
Sub Macro1()
Dim MyDate As Date, MyAnnee As Long, MySemaine As Long, MyMois As String

Application.ScreenUpdating = False
With Sheets("Jour")
    MyDate = .Range("A1").Value
    MyAnnee = Year(MyDate)
    MyMois = Format(MyDate, "mmmm")
    With .PivotTables("TCD1").PivotFields("DOSSOPEN")
        .ClearAllFilters
        On Error GoTo Myerreur
        .CurrentPage = MyDate
    End With
End With

With Sheets("semaine")
    MySemaine = .Range("A1")
    With .PivotTables("TCD1").PivotFields("Année")
        .ClearAllFilters
        .CurrentPage = MyAnnee
    End With
    With .PivotTables("TCD1").PivotFields("Semaines")
        .ClearAllFilters
        .CurrentPage = MySemaine
    End With
End With

With Sheets("mois")
    With .PivotTables("TCD1").PivotFields("Année")
        .ClearAllFilters
        .CurrentPage = MyAnnee
    End With
    With .PivotTables("TCD1").PivotFields("Mois")
        .ClearAllFilters
        .CurrentPage = MyMois
    End With
End With


Application.ScreenUpdating = True
Exit Sub
Myerreur:

Sheets("jour").PivotTables("TCD1").PivotFields("DOSSOPEN").ClearAllFilters

With Sheets("semaine").PivotTables("TCD1")
    .PivotFields("Année").ClearAllFilters
    .PivotFields("Semaines").ClearAllFilters
End With

With Sheets("mois").PivotTables("TCD1")
    .PivotFields("Année").ClearAllFilters
    .PivotFields("Mois").ClearAllFilters
End With

End Sub
 

C'est un peu la même chose que tout à l'heure mais cela permet de filtrer les différents TCD. Je me suis permis d'ajouter un filtre année, pensant que tu ne souhaitais pas avoir la même semaine sur plusieurs années, ou le même mois sur plusieurs années.

Le code de la feuille "jour" pourrait-être:
Private Sub Worksheet_change(ByVal Target As Range)
    If Target.Address = "$A$1" And Target.Count = 1 Then Call Macro1
End Sub
 

(il ne fonctionne pas pour les onglets "semaine" et "mois", celui que tu as écrit pour ces onglets semble aller très bien)

Voilà Anthony, c'est une approche parmi d'autres mais j'espère qu'elle pourra t'aider.

(au passage ... puisque je suppose que tu as lu le lien que je t'ai déposé ci-dessus sur le multipostage, n'oublies pas de remercier la personne de développez.com qui t'a également donné une très bonne piste)

Très bonne soirée à tous,

mth


Pièce jointe:
xlsm Copie de reporting 2.xlsm   [ Taille: 54.13 Ko - Téléchargements: 633 ]
Edité par Mth le 25/08/2012 11:13:52
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes