Mise en forme visuelle TCD

Bonjour le forum

J'ai créé par VBA un TCD. Seulement, il faut quand même dire qu'il est super moche.

capture

Lorsqu'on crée un TCD par Excel directement, il y a une mise en forme (avec des couleurs) ce qui rend la lecture bien plus claire.

Ma question est : Est-ce que une propriété VBA permet de faire ça automatiquement ou bien est-ce que je dois le faire moi même à la main une fois que le tableau est crée ?

d'avance pour vos réponses

Bonjour

Sans voir le code...

Bonjour, merci pour ta réponse rapide

Tu as mal compris (lu?), je ne cherche pas a ce qu'on le fasse pour moi

J'aimerais juste savoir si c'est possible de le faire directement au moment de la création.

Une image tirée d'internet d'un TCD crée directement depuis Excel (donc ce que j'aimerais idéalement obtenir en terme de mise en forme visuelle, je trouve que ça facilite la lecture) :

tcd excel 2010 details 002

Tu as en haut dans mon message ce que j'obtient en le créant depuis VBA.

Bonjour,

A la question de la possibilité de mise en forme d'un TCD à sa conception en VBA, c'est OUI.

Maintenant fais l'effort de joindre un fichier.

Cdlt.

Hello Jean-Eric

Merci c'est tout ce que je voulais savoir

J'ai plaisir a un peu chercher par moi-même enfaite, c'est surtout pour ça que j'ai pas envie de donner de fichier . Je veux surtout pas qu'on le fasse pour moi sinon je saurai pas le refaire plus tard.

C'est juste que je voulais savoir si cette possibilité existait étant donné que j'ai trouvé aucun endroit qui y faisait allusion (peut être que je m'y suis mal prise pour chercher c'est tout aussi possible ).

Bref

Je cherche un peu par moi-même et si je m'en sors pas du tout alors je donnerai un fichier ça va de cette façon là ?

évidemment, si je trouve la solution je la posterai ici afin que si d'autres personnes retombe sur ce fil ils puissent avoir la solution également

Re,

Utilise l'enregistreur de macros pour la mise en forme de ton TCD.

Fais aussi une recherche web sur "tableStyle2".

Mais je rappelle tout de même l'intérêt d'un fichier (représentatif des données).

Tout le monde gagnera un temps précieux.

Cdlt.

Alors j'étais justement entrain de répondre que comme une bécasse j'avais pas pensé à l'enregistreur

Ce qui a effectivement parfaitement répondu à ma question. Désolée de vous avoir fait perdre votre temps

    ActiveSheet.PivotTables("TCDCouts").TableStyle2 = _
        "PivotStyleLight19"

Mais là, en l'occurence qu'il y ait mes données ou non, ça avait pas trop d'intérêt étant donné que je posais une question générale sur le fonctionnement des TCD. Après dans d'autres cas, oui, j'approuve totalement ce que tu dis. Un fichier est un gain de temps précieux pour se faire aider

Merci encore pour tes réponses ^^

Re

Ton code est ancien

Les TCD ayant beaucoup évolué de version en version, un simple enregistrement d'une création de TCD donne déjà le code qui génère un TCD avec un style par défaut sympa et une disposition de TCD en mode compactée et non le vieux look tabulaire...

Bonjour,

Le sujet est clos mais je joins tout de même un petit exemple de création d'un TCD en VBA.

Le code n'est pas commenté mais un double clic sur un terme et un appui sur F1 apportera une information...

Cdlt.

Option Explicit

Public Sub Create_PivotTable()
Dim wb As Workbook
Dim wsData As Worksheet
Dim lo As ListObject
Dim PTCache As PivotCache
Dim PT As PivotTable

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("Data")
    Set lo = wsData.ListObjects(1)

    On Error Resume Next
    wb.Worksheets("Pivot Table").Delete
    On Error GoTo 0

    Application.DisplayAlerts = True

    wb.Worksheets.Add(after:=wb.Worksheets(wb.Worksheets.Count)).Name = "Pivot Table"
    ActiveWindow.DisplayGridlines = False

    Set PTCache = wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=lo.Range)
    PTCache.MissingItemsLimit = xlMissingItemsNone

    Set PT = PTCache.CreatePivotTable(TableDestination:=Cells(3, 1), TableName:="PT_1")

    With PT
        .ManualUpdate = True
        .AddFields RowFields:="Produit", ColumnFields:="Statut", PageFields:="Groupe"
        '.AddFields RowFields:="Produit", PageFields:=Array("Statut", "Groupe")
        With .PivotFields("Unités")
            .Orientation = xlDataField
            .Position = 1
            .Function = xlSum
            .NumberFormat = "#,##0;[Red]-#,##0;"
            .Caption = ChrW(931) & " Unités"
        End With
        .CalculatedFields.Add Name:="Coût total", Formula:="Unités*Coût unitaire"
        With .PivotFields("Coût total")
            .Orientation = xlDataField
            .Position = 2
            .Function = xlSum
            .NumberFormat = "#,##0.00;[Red]-#,##0.00;"
            .Caption = ChrW(931) & " Coût total"
        End With
        .RowAxisLayout xlTabularRow
        .ColumnGrand = True
        .RowGrand = True
        .TableStyle2 = "PivotStyleMedium6"
        .ManualUpdate = False
    End With

    Set PT = Nothing
    Set PTCache = Nothing
    Set lo = Nothing
    Set wsData = Nothing
    Set wb = Nothing

End Sub

bonjour à tous

un TCD se crée au départ (au clavier et à la souris). Ensuite, durant des années, on a juste besoin de l'actualiser.

d'où vient ce besoin de créer mille fois un même TCD ? ? ?

Bonjour à tous

jmd a écrit :

bonjour à tous

un TCD se crée au départ (au clavier et à la souris). Ensuite, durant des années, on a juste besoin de l'actualiser.

d'où vient ce besoin de créer mille fois un même TCD ? ? ?

Alors, j'avoue que je suis très maladroite avec Excel et que j'ai tendance (probablement à tort) à me tourner vers le VBA pour compenser ma très mauvaise maîtrise du logiciel.

Enfaite, j'ai une liste qui n'est jamais la même et qui peut varier entre 2 et .... x lignes. Sachant que cette liste vient d'une autre feuille et est mise à jour par copié/collé en VBA. (Donc la feuille est supprimée et recréée durant le traitement). J'ai donc (peut-être naïvement?) pensée que c'était plus simple de créer le TCD par VBA.

Je n'ai jamais vraiment utilisé Excel, et encore moins VBA. Actuellement je suis étudiante d'été dans une entreprise et on m'a demandé de facilité la gestion d'un fichier avec VBA. Donc j'apprends un peu sur le tas .

Il me semble que quand qqun parle de TCD ça lance un sort d'invocation sur Jmd

78chris a écrit :

Re

Ton code est ancien

Les TCD ayant beaucoup évolué de version en version, un simple enregistrement d'une création de TCD donne déjà le code qui génère un TCD avec un style par défaut sympa et une disposition de TCD en mode compactée et non le vieux look tabulaire...

Oui, c'est exactement ce que j'ai fait et le code ne marchait pas ensuite. (je sais que des fois avec l'enregistreur ça cafouille un peu :/ )

Et ça m'a donné le "vieux look tabulaire" comme tu dis.

Jean-Eric a écrit :

Bonjour,

Le sujet est clos mais je joins tout de même un petit exemple de création d'un TCD en VBA.

Le code n'est pas commenté mais un double clic sur un terme et un appui sur F1 apportera une information...

Cdlt.

Merci beaucoup j'vais voir si je peux améliorer ce que j'ai déjà

Re,

N'hésite pas à poser des questions.

Cdlt.

Re Jean-Eric,

En reprenant ton fichier exemple, imaginons que "aa, bb, et ff" sont attribués à des frais généraux et que les autres soient attribués à des investissements.

Si je veux avoir deux sommes différentes. Une pour les frais généraux et l'autre pour les investissements. Comment je devrais m'y prendre?

Re,

Merci de joindre un fichier à ta demande.

Cdlt.

Re,

Oulah j'en ai pas. Je me posais une question théorique.

J'vais essayer d'arranger quelque chose avec ton fichier exemple


Et voilà l'exemple que tu avais fait que j'ai modifié un peu pour aller dans le sens de ma question

Bonjour,

Il est impératif de créer une nouvelle colonne dans le tableau.

J'ai modifié la procédure en ajoutant un champ de page, figé sur FG (exemple de ce que l'on peut faire!).

Cdlt.

Zohnya a écrit :

Bonjour à tous

Enfaite, j'ai une liste qui n'est jamais la même et qui peut varier entre 2 et .... x lignes. Sachant que cette liste vient d'une autre feuille et est mise à jour par copié/collé en VBA. (Donc la feuille est supprimée et recréée durant le traitement). J'ai donc (peut-être naïvement?) pensée que c'était plus simple de créer le TCD par VBA.

re

par définition des TCD, ils prennent en compte automatiquement TOUTES les lignes des tableaux.

Voici comment opérer :

1/ rapatrier les données dans un Donnee.xlsx (ceci se fait en général sans VBA, mais tu fais à ton idée). Ce xlsx est donc régénéré à chaque mise à jour

2/ créer un autre xlsx Exploitation.xlsx, contenant un onglet MIR miroir de Donnees.xlsx (il contient de simples liaisons vers les données, penser à mettre une plage très longue parce que les données vont grandir durant les années à venir). Mettre MIR sous forme de tableau.

Créer les TCD dans d'autres onglets de Exploitation.

Fini !

à chaque mise à jour de Donnees, MIR se met à jour et les TCD se mettent à jour d'un clic droit.

il est inutile (et nuisible et complexe) de recréer des TCD à chaque fois. La même remarque vaut pour des formules ou des graphiques, o ne les recrée pas chaque fois.

nota : il faut apprendre les "tableaux" et les TCD avant d'apprendre l'addition

salut Jean-Eric

Re

Jean-Eric a écrit :

Bonjour,

Il est impératif de créer une nouvelle colonne dans le tableau.

J'ai modifié la procédure en ajoutant un champ de page, figé sur FG (exemple de ce que l'on peut faire!).

Cdlt.

D'accord. Merci. Je crois que j'ai mieux compris comme ça fonctionnait et je ne soupçonnait pas l'utilité du tableau. J'ai adapté ça et ça marche niquel. Par contre, Il y a quelque chose que je ne comprends pas dans ton code VBA : Comment est-ce que tu fais le lien entre le tableau et le TCD ? A quel moment tu renseignes le tableau ?

jmd a écrit :

re

par définition des TCD, ils prennent en compte automatiquement TOUTES les lignes des tableaux.

Voici comment opérer :

1/ rapatrier les données dans un Donnee.xlsx (ceci se fait en général sans VBA, mais tu fais à ton idée). Ce xlsx est donc régénéré à chaque mise à jour

2/ créer un autre xlsx Exploitation.xlsx, contenant un onglet MIR miroir de Donnees.xlsx (il contient de simples liaisons vers les données, penser à mettre une plage très longue parce que les données vont grandir durant les années à venir). Mettre MIR sous forme de tableau.

Créer les TCD dans d'autres onglets de Exploitation.

Fini !

à chaque mise à jour de Donnees, MIR se met à jour et les TCD se mettent à jour d'un clic droit.

il est inutile (et nuisible et complexe) de recréer des TCD à chaque fois. La même remarque vaut pour des formules ou des graphiques, o ne les recrée pas chaque fois.

Alors, je suis obligée de générer les données par VBA (je crois ?) étant donné que je récupère des noms de fichier contenus dans un répertoire (sachant que ces fichiers varient fortement).

Mais merci ! je vais explorer la solution que tu me proposes ! je suis sûre que je peux améliorer ce que j'ai !

jmd a écrit :

nota : il faut apprendre les "tableaux" et les TCD avant d'apprendre l'addition

Oui monsieur. Bien monsieur.

Zohnya a écrit :

Bonjour à tous

jmd a écrit :

bonjour à tous

un TCD se crée au départ (au clavier et à la souris). Ensuite, durant des années, on a juste besoin de l'actualiser.

d'où vient ce besoin de créer mille fois un même TCD ? ? ?

Enfaite, j'ai une liste qui n'est jamais la même et qui peut varier entre 2 et .... x lignes. Sachant que cette liste vient d'une autre feuille et est mise à jour par copié/collé en VBA. (Donc la feuille est supprimée et recréée durant le traitement). J'ai donc (peut-être naïvement?) pensée que c'était plus simple de créer le TCD par VBA.

c'est bien ce que je disais, nul besoin de REcréer un TCD.

tu le crées au départ et ensuite durant des années, tu l'actualises

pas besoin de VBA.

on te demande "par VBA", c'est comme te demander de visser une vis avec un marteau. Il est de ton rôle de proposer un tournevis

jmd a écrit :

c'est bien ce que je disais, nul besoin de REcréer un TCD.

tu le crées au départ et ensuite durant des années, tu l'actualises

pas besoin de VBA.

on te demande "par VBA", c'est comme te demander de visser une vis avec un marteau. Il est de ton rôle de proposer un tournevis

Je suis entrain de tout refaire pour aller dans ce sens là maintenant que j'ai un peu mieux compris comment ça fonctionnait.

Rechercher des sujets similaires à "mise forme visuelle tcd"