[FAQ Excel] Les tableaux croisés dynamiques
Q: C'est quoi Un Tableau Croisé Dynamique ?
R:
Un Tableau Croisé Dynamique (TCD) est la présentation d'une source de données sous forme de tableau. Il est dynamique car toute modification de la source entraine la mise à jour du tableau (l'actualisation des données). Il permet de combiner et comparer rapidement un grand nombre de données.
Dans un rapport de tableau croisé dynamique, chaque colonne ou champ de données sources devient un champ de tableau croisé dynamique qui synthétise plusieurs lignes d'informations. La présentation du tableau peut être paramétrée en personnalisant la position des champs de données, en fonction des résultats à visualiser.
Cet outil permet d'effectuer des calculs (somme, nombre ,produit , max ,ecart type ... ) et d'analyser de facon Dynamique la source de données. Il est possible de faire pivoter les lignes et colonnes pour afficher différentes synthèses des données sources.
Le TCD est un outil statistique qui repose avant tout sur une base de données bien structurée. Il ne faut pas laisser de lignes ou colonnes vides entre les données de la base.
Evitez (si possible) de placer le TCD dans la feuille contenant la base de données.
********
Q: Comment créer un TCD par macro ?
R:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Sub CreerTCD()
'SourceData: Définit la source de données dans le TCD.
'[Feuil1!A1].CurrentRegion.Address(, , xlR1C1, True) permet d'étendre
'automatiquement la sélection de façon à y inclure toute la zone en cours
'à partir de la cellule A1, dans la Feuil1.
'TableDestination: Définit la position du TCD (cellule A3 dans la Feuil2).
'TableName: Définit le nom du nouveau TCD. ("Mon TCD")
ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
[Feuil1!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
TableDestination:="Feuil2!R3C1", _
TableName:="Mon TCD"
'Mise en forme:
With Feuil2.PivotTables("Mon TCD")
'Ajoute un champ de lignes nommé "Ville".
'Le nom du champ "Ville" doit préalablement exister comme entête de la
'source de données.
.AddFields RowFields:="Ville"
'Définit l'orientation du champ nommé "CA" en tant que Donnée.
'le nom du champ "CA" doit préalablement exister comme entête
'de la source de données.
.PivotFields("CA").Orientation = xlDataField
End With
End Sub |
************
Q. Comment appliquer la fonction Moyenne au champ "Somme de CA" du TCD ?
R.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Sub AppliquerFonctionTCD()
Feuil2.PivotTables("Mon TCD").PivotFields("Somme de CA").Function = xlAverage
'Les autres constantes disponibles pour la propriété Function:
'xlAverage - Moyenne
'xlCountNums - Nb
'xlMin - Min
'xlStDev - Ecartype
'xlSum - Somme
'xlVar - Var
'xlCount - Nombre
'xlMax - Max
'xlProduct - Produit
'xlStDevP - Ecartypep
'xlUnknown -
'xlVarP - Varp
End Sub |
*************
Q: Comment modifier la source d'un TCD ?
R:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Sub ModifierSource()
Dim objCellule As Range
Dim Pvt As PivotTable
'Définit la nouvelle plage source
Set objCellule = ThisWorkbook.Sheets("Feuil1").Range("A1:B50")
'Définit le TCD qui va être mis à jour.
Set Pvt = Sheets("Feuil2").PivotTables("Mon TCD")
Pvt.PivotTableWizard SourceType:=xlDatabase, _
SourceData:=objCellule.Address(, , xlR1C1, True)
End Sub |
***********
Q: Comment détruire les anciennes étiquettes dans un TCD ?
R:
Suite aux modifications d'étiquettes dans la base de données, il peut arriver que le TCD ne s'actualise pas et les étiquettes de colonnes persistent dans les filtres des champs. Utilisez la macro ci dessous pour y remédier.
(à partir d'excel 2002 uniquement)
Code:
1 2 3
| Dim Pvt As PivotTable
Set Pvt = ActiveSheet.PivotTables("Mon TCD")
Pvt.PivotCache.MissingItemsLimit = xlMissingItemsNone |