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 :

Comment masquer des colonnes dans un extrait de données tirées d'un TCD [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut Comment masquer des colonnes dans un extrait de données tirées d'un TCD
    Bonjour,
    J'ai une base de données, dont un type de données n'est actuellement pas fiable.
    En attendant de trouver une solution sur ces données, la direction a décidé d'en supprimer provisoirement l'accès.

    J'ai donc masqué les colonnes concernées dans ma base de données et j'ai parallèmement décoché les éléments dans les Tableaux croisés dynamiques.
    Cependant si un utilisateur double clique sur une donnée d'un TCD, cela ouvre un onglet avec la totalité des informations concernant cet élément (http://excel.developpez.com/faq/?page=TCD#ExtractionTCD)

    Quel code puis-je écrire pour que si on crée un onglet les colonnnes R, S et W soient masquées ?
    Quel type d'évenements prendre ?

    PS : le fichier n'est qu'en lecture seule

    Merci de votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    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 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Tu peux déjà désactiver le double clic (options du TCD, Onglet Données, décocher Affichage de Détails), sinon il faut intercepter le double clic dans le TCD et masquer ou supprimer les colonnes de l'extrait.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonsoir 78chris,
    Merci pour ta réponse.

    Je ne peux pas interdire d'aller voir le détail du TCD, car c'est utilie aux utilisateurs.
    Donc je préfère ta 2ème solution
    sinon il faut intercepter le double clic dans le TCD et masquer ou supprimer les colonnes de l'extrait.
    mais si tu pouvais développer un peu, parce que je ne vois pas comment commencer.
    j'ai bien pensé utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    mais comment préciser que c'est un double click uniquement sur les données des TCD (il y a une dizaine de TCD) ?
    Merci

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    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 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Re

    Il faut une boucle pour vérifier si
    • le double clic est sur un onglet contenant un TCD
    • et si oui, TCD par TCD pour vérifier si la cellule appartient au TableRange1 du TCD
    • et si oui, quand Target.PivotCell.PivotCellType = xlPivotCellValue c'est que le double clic a bien eu lieu sur une cellule de valeurs.


    Cela te permet de valoriser une variable public afin de paramétrer l'évènement NewSheet.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour,
    j'ai bien galéré, alors que c'était si simple...
    Je partais sur un évènement sur le TCD, alors que j'aurai du me concentrer sur ta dernière phrase...
    Bref, j'ai réussi, j'en ai même profité pour mettre les tableaux en forme à chaque fois..
    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
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim DerLg As Long
    DerLg = ActiveSheet.Range("A1").End(xlDown).Row
        If Left(Sh.Name, 5) = "Feuil" Then
            'mise en forme du tablo
            Cells.EntireColumn.AutoFit
          Rows("1:1").RowHeight = 33
            Rows("1:1").HorizontalAlignment = xlCenter
            Rows("1:1").VerticalAlignment = xlTop  'Position Hte
            Rows("1:1").WrapText = True    'renvoie à la ligne
          Columns("D:F").ColumnWidth = 4.67
            Columns("G:AB").ColumnWidth = 8.11
            Columns("C:AB").HorizontalAlignment = xlCenter
          'Suppression des colonnes Inutilies
            Columns("R:Y").Delete
            'Ajout des moyennes journalières
            'ActiveSheet.Range("B" & DerLg + 1) = "Moyenne journalière"
            End With
           Else
            Exit Sub
        End If
    End Sub
    Là où j'ai le plus galéré, c'est pour obtrenir sur la dernière ligne les moyennes de chaque colonne
    par l'enregistreur, j'obtiens le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Range("Tableau6[[ContTrait]:[Tp Post Traitm]]").Select
        ActiveSheet.ListObjects("Tableau6").ShowTotals = True
        Range("Tableau6[[#Totals],[ContTrait]]").Select
        ActiveSheet.ListObjects("Tableau6").ListColumns("ContTrait").TotalsCalculation _
            = xlTotalsCalculationAverage
    Seulement voilà comment changer Tableau6 par une variable ? j'ai pas trouvé
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Tbo As String
    Tbo = ActiveSheet.ListObjects(1).Name
    Range("Tbo[[#Totals],[ContTrait]]").Select
    mais j'ai une erreur sur "La méthode 'Range' de l'objet'_Global' a échoué !!!
    Finalement, j'ai trouvé un truc, il doit y avoir mieux, mais j'en peux plus, j'arrête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            'Ajout des moyennes journalières
            With ActiveSheet.ListObjects(1)
                .ShowTotals = True
                .ListColumns(5).TotalsCalculation = xlTotalsCalculationAverage
                .ListColumns(6).TotalsCalculation = xlTotalsCalculationAverage
    'etc...
            End With
        Cells.Replace What:="Total", Replacement:="Moyenne par jour", LookAt:= _
            xlWhole, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
    j'aurai quand même bien aimé trouvé comment remplacé Tableau6 par une variable, car je travaille beaucoup avec des tableaux nommés et ça parle beaucoup mieux.
    Merci A+

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    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 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Dans la mesure ou l'extraction crée un seul tableau c'est forcément le 1er de l'onglet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ListObjects(1)
    que tu peux d'ailleurs renommer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ListObjects(1).Name = "montableau"
    ou associer à une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set montableau = ActiveSheet.ListObjects(1)
    ou encore traiter dans un With.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour,
    Mon code fonctionne bien.
    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/11/2014, 16h12
  2. comment masquer des colonnes
    Par zakiovich dans le forum Reports
    Réponses: 2
    Dernier message: 17/02/2011, 17h41
  3. Réponses: 9
    Dernier message: 07/10/2010, 17h49
  4. Masquer des colonnes dans un tableau
    Par fornorst dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/04/2006, 21h00
  5. Réponses: 1
    Dernier message: 05/11/2004, 17h15

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