Style TCD en VBA

Style TCD en VBA - VB/VBA/VBS - Programmation

Marsh Posté le 23-05-2013 à 03:28:06    

Bonjour

 

J'ai créé un TCD avec un style personnalisé spécifiant notamment le style de "1ère rangée de colonne" et "2ème rangée de colonne". Cela donne:

 

http://i42.tinypic.com/2wftyxk.jpg

 

Le problème est qu'Excel ne permet pas de spécifier la taille de la police d'écriture des TCD directement  :fou: . Après chaque actualisation du tableau, il redonne la taille par défaut à toutes les polices du tableau.

 

J'ai trouvé ça pour spécifier une taille de police en VBA après chaque actualisation du TCD:

 

 ActiveSheet.PivotTables("TCD" ).PivotSelect "", _
    xlDataAndLabel, True
   
    With Selection.Font
   
        .Name = "Calibri"
        .Size = 9
        .ThemeFont = xlThemeFontNone
    End With

 

Cela fonctionne mais est appliqué à tout le tableau donc ma question est: comment en VBA sélectionner ce qui correspond dans les style Excel à "2ème rangée de colonnes" ? Sachant que sélectionner manuellement des plages spécifiques en VBA pour appliquer ne me va pas car mon tableau est sujet à souvent changer de taille en fonction des données sources.

 

:jap:


Message édité par Inataqi S le 23-05-2013 à 14:27:49
Reply

Marsh Posté le 23-05-2013 à 03:28:06   

Reply

Marsh Posté le 23-05-2013 à 08:20:25    

Bon j'ai finalement réussi, si ça peut aider quelqu'un :
 

Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("TCD" )  
 
pt.PivotFields("Percent" ).DataRange.Select  
 
    With Selection.Font  
         
            .Name = "Calibri"
            .Size = 7
    End With


 
Donc on défini le TCD, on choisit les colonnes nommées dans les propriétés du TCD  et on parcourt la sélection pour changer la police.
 
Le problème est que si on a une colonne total automatique (donc dans mon cas total %), cela ne la sélectionne pas donc j'ai trouvé ça:
 

Dim lColFields As Long
 
With ActiveSheet.PivotTables("TCD" )
        lColFields = .ColumnFields.Count - 1
        If .RowGrand = False Or lColFields = 0 Then Exit Sub
        With .DataBodyRange
            .Resize(.Rows.Count - 1, lColFields).Offset(0, .Columns.Count - lColFields).Select
        End With
    End With
 
With Selection.Font
    .Name = "Calibri"
    .Size = 7
End With
 


 
Je suppose qu'il y a moyen de faire plus propre mais bon ça marche  :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed