Modification NumberFormat d'un TCD

Bonjour,

je vous demande de l'aide car je suis venu à bout de l'ensemble de mes idées. J'ai un TCD que je fabrique complétement par le VBA sauf qu'il ressort avec un format par défaut :

"$#,##0.00_);[Red]($#,##0.00)"

Ce qui ne correspond pas à mes données donc je voudrais le mettre lors de la création avec un format :

"# ##0.00 €;[Rouge]-# ##0.00 €;-"

J'ai tout essayé afin de modifier la propriété "NumberFormat" de mon PivotFiel ou DataField mais cela me marque toujours un message d'erreur.

Ma fonction :

Private Sub formatPivot(pvtTbl As PivotTable)
    Dim pvtType As String
    Dim pvtFld As PivotField

    ' Change to sum and update the number format
    For Each pvtFld In pvtTbl.DataFields
        If Not UCase(pvtFld.name) Like "*QUANTIT*" Then
            pvtType = pvtFld
            With pvtTbl.PivotFields(pvtType)
                .Function = xlSum
                .NumberFormat = "# ##0.00 €;[Rouge]-# ##0.00 €;-"
            End With
        End If
    Next
End Sub

Quelqu'un saurait comment je peux modifier ce Format directement par le VBA ou alors pour qu'il soit par défaut comme je le désire ?

Merci d'avance.

Bonjour

Sur tous les forums on te dira que construire un TCD par VBA se justifie dans moins de 1% des cas...

Le format nombre pas défaut est le format standard donc le style normal de cellule a du être modifié

Quels sont les paramètres régionaux de Windows et les options d'Excel les utilisent-ils?

A tester .NumberFormat = "#,##0.00;[Red]- #,##0.00"

Je suis d'accord je sais que c'est pas terrible de construire mon TCD par le VBA à la base je le faisais pas mais en mesurant mon temps de programme il est plus rapide. Je m'explique :

J'ai un onglet regroupant plusieurs TCD (besoin utilisateurs obligatoire)

1ère solution ajouter des lignes dynamiquement lors de l'actualisation du TCD entre les deux pour avoir le bon nombre de ligne.

2ème solution tout supprimer et remettre dans l'ordre voulu. => Plus rapide donc choisi

En fait par l'interface graphique c'est un format standard, mais quand je lis la propriété NumberFormat j'obtiens le format américain.

Mes paramètres régionaux sont tous en France pour Windows. Mais c'est une machine d'une organisation internationale, il y a moyen qu'il est ait un paramètre défini ailleurs que mes paramètres accessibles dans les paramètres Windows.

Et comment savoir si Excel les utilisent ?

A tester .NumberFormat = "#,##0.00;[Red]- #,##0.00"

Il refuse tout simplement la modification de NumbrFormat peut importe le type que je lui met, je peux que la lire.

RE

L'option ne concerne que les séparateurs de milliers et décimaux donc pas le symbole monétaire

J'ai testé aussi .NumberFormat = "#,##0.00 €;[Red]- #,##0.00 €" qui fonctionne

Es-tu sûr que tes valeurs sont bien considérées comme numériques à la base ?

RE, Merci de ton aide.

Ton NumberFormat est aussi lié à un PivotField d'une PivotTable ?

Car j'arrive à modifier le numberFormat d'un range quelconque, mais pas propre à un TCD.

C'est le résultat d'une formule qui donne 0 ou alors un prix et possède à la base le Format que je désire lui appliqué au sein du TCD.

RE

OUI, testé sur un TCD

Est-ce que tu peux me donner ta ligne de code qui fait cela s'il te plait ?

Car je veux faire une boucle sur toutes les colonnes de mon TCD qui ne sont pas des quantités (les autres sont des prix donc euros) et imposer le format donc j'ai ça :

Private Sub formatPivot(pvtTbl As PivotTable)
    Dim pvtType As String
    Dim pvtFld As PivotField

    ' update the number format
    For Each pvtFld In pvtTbl.DataFields
        If Not UCase(pvtFld.name) Like "*QUANTIT*" Then
            pvtType = pvtFld
            pvtTbl.PivotFields(pvtType).NumberFormat = "# ##0.00 €;[Rouge]-# ##0.00 €;-"
        End If
    Next
End Sub

Bonjour

Testé sur un TCD avec un champ Quantité

    For Each pvtFld In pvtTbl.DataFields
        If Not UCase(pvtFld.Name) Like "*QUANTIT*" Then
            pvtType = pvtFld
            pvtTbl.PivotFields(pvtType).NumberFormat = "#,##0.00 €;[Red]- #,##0.00 €;-"
        End If
    Next

D'accord donc ce qui ne marche pas chez moi marche chez toi.

Très bien.

Bah merci de ton aide, je sais pas comment je vais faire dans ce cas

Rechercher des sujets similaires à "modification numberformat tcd"