TCD : Somme par défaut au lieu de Nombre

Bonjour,

Quand je crée un TCD et j'affiche des champs calculés, Excel les affiche avec la fonction Nombre plutôt que Somme.

D'après mes recherches, cela vient de champ vide, d'erreurs... Donc impossible de mettre Somme par défaut.

J'ai trouvé une Macro pour convertir toutes les colonnes "Nombre" en "Somme" mais ça ne marche pas donc je suis obligé de modifier chaque champ l'un après l'autre...

Existe-t-il un moyen de tout convertir en une seule fois ou de forcer Somme par défaut ?

Merci.

282classeur2.xlsx (15.01 Ko)

Bonjour,

Remplace les valeurs vides par zéro dans la source et refait le TCD si tu veux cela fasse automatiquement

Ou bien, si tu veux faire ça après coup, sélectionner la plage clique droit et le choix "Synthétiser les valeurs par" et "somme"

Bonjour,

Un exemple.

Il suffirait des zéros dans tes données !

Cdlt.

Option Explicit

Private Sub cmdSomme_Click()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField

    Set ws = ActiveSheet
    Set pt = ws.PivotTables(1)

    Application.ScreenUpdating = False

    pt.ManualUpdate = True
    For Each pf In pt.DataFields
        pf.Function = xlSum
        pf.NumberFormat = "#,##0;[Red]-#,##0;"
    Next pf
    pt.ManualUpdate = False

    Application.ScreenUpdating = True
    Set pf = Nothing
    Set pt = Nothing
    Set ws = Nothing

End Sub

Mettre des zéros à la place des cellules vides, ça prend autant de temps voir plus que de double-cliquer sur chaque en-tête et passer en Somme.

L'astuce de ton bouton "Somme" est pas mal. Le hic, c'est que je ne comprends pas comment tu l'as mis. OK pour placer le code Visual basic mais comment tu crées le bouton en le rattachant au code ?

Est-ce possible que ça mette aussi à jour les en-têtes ? Actuellement, les chiffres sont modifiés mais les noms des en-têtes gardent ceux d'origine.

Re,

Quand tu réponds, précise bien à qui tu t'adresses. Cela peut éviter les confusions et permet de te répondre à tes remarques.

Pour mettre la somme partout : As-tu lu bien les réponses données ?

@Raja,

Je répondais à vous deux et à @Jean-Eric pour le bouton Somme de son fichier.

Oui, j'ai bien lu vos retours :

• mettre des zéros à la place de cellules vides → trop long

• "Synthétiser les valeurs par" et "somme" → identique à double-cliquer sur chaque en-tête (trop long)

• la technique du bouton "Somme" de @Jean-Eric modifie toutes les colonnes d'un coup, ce qui est parfait. Il ne manque que l'actualisation des têtes.

Ai-je manqué quelque chose ?

Merci.

primokorn a écrit :

@Raja,

• "Synthétiser les valeurs par" et "somme" → identique à double-cliquer sur chaque en-tête (trop long)

Merci.

Non, il faut prendre chaque plage et le faire. L'entête est aussi modifié. Bien entendu, il faut le faire 2 fois dans ton tableau.

Raja a écrit :
primokorn a écrit :

@Raja,

• "Synthétiser les valeurs par" et "somme" → identique à double-cliquer sur chaque en-tête (trop long)

Merci.

Non, il faut prendre chaque plage et le faire. L'entête est aussi modifié. Bien entendu, il faut le faire 2 fois dans ton tableau.

J'ai l'impression qu'on a du mal à se comprendre.

Oui, il faut le faire 2 fois dans mon tableau, pour "Qté" et "Pv". Si on a 10 colonnes "Nombre" alors il faut répéter "Synthétiser les valeurs par" et "somme" 10 fois on est d'accord ?

En quoi, est-ce plus rapide qu'un double-clic sur chaque en-tête de colonne du TCD puis "Somme" ?

primokorn a écrit :

• mettre des zéros à la place de cellules vides → trop long

Merci.

bonjour à vous

ma suggestion : dans le tableau des valeurs, créer une colonne = SI(cellulevaleur = "" ; 0 ; cellulevaleur) à tirer vers le bas en qq secondes

cette colonne contient donc les valeurs ou des zéros

baser le TCD sur cette colonne

cette méthode consistant à ajouter une colonne dans un tableau de données est très utiles en de multiple cas. Par ex si des dates sont à un format bizarre, on crée une colonne qui remet au bon format (avec des / au lieu de - ) Etc.

Re,

Une mise à jour à tester, sans classeur joint.

Option Explicit

Private Sub cmdSomme_Click()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField

    Set ws = ActiveSheet
    Set pt = ws.PivotTables(1)

    Application.ScreenUpdating = False

    pt.ManualUpdate = True
    For Each pf In pt.DataFields
        With pf
            .Function = xlSum
            .NumberFormat = "#,##0;[Red]-#,##0;"
            .Caption = ChrW(931) & Chr(32) & pf.SourceName 
       End With
    Next pf
    pt.ManualUpdate = False

    Application.ScreenUpdating = True
    Set pf = Nothing
    Set pt = Nothing
    Set ws = Nothing

End Sub

@jmd

Merci pour ton intervention. Effectivement, ça peut marcher mais je doute de la rapidité par rapport à ce que propose Excel. À tester.

@Jean-Eric

C'est parfait comme ça

Pourrais-tu me dire comment tu crées le bouton et comment tu le relies au code Visual Basic ?

Bonjour,

Dans le menu Développeur; Insérer un contrôle.

Sélectionner Bouton de commande (contrôle ActiveX).

Créer le bouton, puis click droit pour ouvrir le menu contextuel.

Tu as alors Propriétés pour formater le contrôle et Visualiser le code pour ouvrir l'éditeur VBE.

Cdlt.

Nota : je renvoie le fichier car je n'avais lié le tableau (dynamique) au TCD.

Parfait, j'ai pu reproduire le bouton avec un autre exemple.

Merci beaucoup pour l'aide apportée !

Rechercher des sujets similaires à "tcd somme defaut lieu nombre"