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 :

TCD masquer champ de ligne date groupée selon cellule [XL-2010]


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
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut TCD masquer champ de ligne date groupée selon cellule
    Bonjour,

    Je dispose d'un fichier avec beaucoup de données avec lesquelles j'ai réalisé plusieurs tableaux croisés dans divers onglets.
    Je souhaite synchroniser les TCD selon des éléments saisis dans des cellules de façon à ne pas avoir à modifier individuellement chaque tableau et à permettre à des utilisateurs non initiés de le faire.

    Mes macros fonctionnent correctement mais je coince sur un point particulier.

    L'utilisateur saisit une date de début dans une cellule et la date de fin se positionne automatiquement au dernier jour du 13ème mois suivant.
    Ces dates se reportent très bien dans mon champ de ligne comme indiqué dans l'image ci-jointe.

    Ce que je n'arrive pas à faire, malgré de nombreux essais, c'est de masquer les élement antérieurs et postérieurs aux dates de début et de fin.
    Dans mon code ci-dessous il n'y a aucun souci si je mets la date en dur sous la forme ">31/01/2013" par exemple mais je ne réussis pas à le faire avec mes dates de début et de fin.

    Si quelqu'un(e) arrivait à me dépatouiller ce serait formidable.

    Amicalement

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Debut As Date
    Dim Fin As Date
    Dim NbJours As Byte
    Dim DebutFiltre As String
    Dim FinFiltre As String
     
    If Not (Intersect(Target, Range("C1")) Is Nothing) Then
     
        'Désactive les événement afin de ne pas reboucler lors de la mise à jour du TCD
        Application.EnableEvents = False
     
        Origine = CDate(DateSerial(2011, 10, 1))
        Debut = CDate(DateSerial(Year(Range("C1")), Month(Range("C1")), 1))
     
        If Debut < Origine Then
            MsgBox "La date saisie est antérieure au début du contrat." & vbCrLf & vbCrLf _
            & "Veuillez saisir une autre date.", vbOKOnly, "Erreur de date"
            Exit Sub
        End If
     
        NbJours = Day(DateSerial(Year(Debut) + 1, Month(Debut) + 1, 0))
        Fin = CDate(DateSerial(Year(Debut) + 1, Month(Debut), NbJours))
        Range("C2").Value = Fin + 0.9999
        Debut = CLng(Range("C1"))
        Fin = CDec(Range("C2"))
        Range("A7").Group Start:=Debut, End:=Fin, Periods:=Array(False _
            , False, False, False, True, False, True)
         DebutFiltre = "<" & Left(Range("C1"), 10)
         FinFiltre = ">" & Left(Range("C2"), 10)
     
        'Ne pas afficher dans le TCD les valeurs < DebutFiltre et > Fin Filtre
        With ActiveSheet.PivotTables("TCD_Histo_Nb_Diag").PivotFields("Années")
            .PivotItems(DebutFiltre).Visible = False 'c'est la ligne qui coince
            .PivotItems(">31/01/2013").Visible = False
        End With
     
        Columns("C:N").AutoFit
        'Réactive les événements
        Application.EnableEvents = True
    Else
        Exit Sub
    End If
     
    End Sub
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut
    Bonjour,

    Suite à une autre macro que j'ai faite j'ai tenté ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub masquer()
     
    Dim MaDate As Object
     
    With Sheets("Historique Nb").PivotTables("TCD_Histo_Nb_Diag").PivotFields("Années")
     
    For Each MaDate In .PivotItems
        If Not MaDate.Name Like "2*" Then MaDate.Visible = False
    Next
     
    End With
     
    End Sub
    J'obtiens une erreur 1004.
    Par contre si je supprime le not mes années se masquent bien.
    Ceci donnera peut-être une idée à quelqu'un.

    Amicalement

  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

    Cela est aussi réalisable sans VBA par une colonne supplémentaire dans les données sources (exemple ici http://www.excel-formations.fr/Trucs_astuces/TCD07.php).

    Dans ton cas il faudrait que cette colonne soit basée par formule sur la date choisie par l'utilisateur.

    Pour la synchro de plusieurs TCD, penser aux segments.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut
    Bonjour,

    Merci pour ces informations.

    Lorsque j'avais créé la discussion mon pc n'avait pas encore été mis à jour avec Office 2010 mais avec ton lien et le tuyau des segments je pense que je devrais arriver à quelque chose lorsque je me repencherai sur ce dossier.

    Bonne fin de week-end.
    Daniel

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Par défaut
    Bonjour Chris,

    Grâce à ton conseil et au fait que toutes les personnes qui utilisent mon fichier sont maintenant sous excel 2010 j'ai remplacé mes champs "Années" et "Mois" par des segments.
    Non seulement c'est beaucoup plus simple mais là où il était impossible de décocher les 1er et dernier champ ("<jj/mm/aaaa" et ">jj/mm/aaaa") par macro il n'y a aucun souci avec les segments en utilisant le morceau de code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim debut As String
    Dim fin As String
     
        With ActiveWorkbook.SlicerCaches("Segment_Années")
            .SlicerItems(debut).Selected = False
            .SlicerItems(fin).Selected = False
        End With
    Je peux donc clôturer ce sujet.

    Amicalement

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

    Merci de ce retour, qui plus est, positif

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

Discussions similaires

  1. [XL-2010] TCD : Filtrer des dates dans un champ étiquette lignes ?
    Par Delphineee dans le forum Excel
    Réponses: 1
    Dernier message: 12/04/2013, 13h48
  2. [XL-2003] VBA supprimer des ligne selon la date d'une cellule
    Par Scrabblouille dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/08/2009, 22h37
  3. Trier des lignes sur un autre champ que celui du groupe
    Par tatayoyo dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 28/01/2009, 19h37
  4. Excel - TCD - champs d ligne à colonne
    Par ticoco dans le forum Excel
    Réponses: 2
    Dernier message: 13/01/2009, 17h57
  5. TCD - masquer la liste d'un champ
    Par NATOU2 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/02/2008, 17h58

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