[CONSEIL] Macro mise en forme automatique nombres dans TCD

titiborregan5

XLDnaute Accro
Bonjour à tous,

j'en ai eu marre de devoir toujours mettre en forme mes champs valeurs dans un TCD, à savoir le plus souvent activer le séparateur de milliers et supprimer les décimales.

Sachant que dans un TCD il faut le faire à chaque fois pour chaque champ... Lourd lorsqu'il y a 10 champs de valeurs de devoir répéter l'opération 10 fois...

Je me suis dit "Fais-toi une macro avec un raccourci dans le ruban".

Ma macro faite dans le classeur PERSONAL.XLSB et placée dans le ruban cela semble fonctionner, mais mon code n'est pas optimal et je voulais savoir si vous saviez comment l'améliorer:
VB:
Sub Mise_en_forme_nombres_TCD()
'
' Mise_en_forme_nombres_TCD Macro
' Sert à la mise en forme des nombres dans un TCD (séparateur de milliers & 0 décimales)


ActiveCell.End(xlUp).Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "#,##0"
End Sub

Notamment avec la sélection du champ du TCD plutôt que activecell.end.offset.select ultra laid à mon goût, mais qui semble faire le boulot!

Merci d'avance

Tibo
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : [CONSEIL] Macro mise en forme automatique nombres dans TCD

Hello,
je pensais que quelqu'un aurait une petite idée.
En gros, comment récupérer le nom du TCD et du champ actif lorsqu'on clique dessus?

Dites-moi si je me suis mal exprimé car c'est étrange que les lumières de ce forum ne puissent m'éclairer!

Merci d'avance
A+
 

chris

XLDnaute Barbatruc
Re : [CONSEIL] Macro mise en forme automatique nombres dans TCD

Bonjour

Comme je garde très longtemps mes TCD, je trouve que paramétrer 10 champs une fois pour n années n'est pas si terrible.
J'utilise aussi plusieurs formats notamment avec ou sans euros.

De ce fait ta demande ne m'a pas trop titillée. Mais puisque personne ne t'as répondu, voici une solution qui semble fonctionner sachant, qu'à ma connaissance, il n'y a pas de notion de TCD actif comme on a celle de cellule active.
Code:
Sub test()
    Dim tcd As PivotTable
    Dim pft As PivotField
    Dim goon As Boolean
    
    goon = True
    
    For Each tcd In ActiveSheet.PivotTables
        If Not (Intersect(tcd.DataBodyRange, ActiveCell) Is Nothing) And goon = True Then
            For Each ptf In tcd.VisibleFields
                If Not (Intersect(ptf.DataRange, ActiveCell) Is Nothing) Then
                    ptf.NumberFormat = "#,##0"
                    goon = False
                    Exit For
                End If
            Next ptf
        End If
        
    Next tcd

End Sub
 
Dernière édition:

titiborregan5

XLDnaute Accro
Re : [CONSEIL] Macro mise en forme automatique nombres dans TCD

Bonjour Cris,
merci pour ton retour.
Je vais essayer de comprendre ton code et le mettre en place.

En théorie les TCD devraient vivre longtemps mais là où je bosse les extractions sont capricieuses du coup on recrée tout le temps de nouveau TCD. On est plus sur du jetable en réalité!
Un msgbox avec le nom du tcd et le nom du champ où on click c'est pas possible ?

Encore merci!

A+
 

Discussions similaires

Réponses
5
Affichages
335

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet