Les tableaux croisés et graphiques
Les tableaux croisés dynamiques
La collection PivotTables contient tous les objets de tableau croisé dynamique (objets PivotTable) contenus dans une feuille de calcul.
1. L’objet PivotTable
Cette section décrit les collections, propriétés et méthodes les plus couramment utilisées pour la création et la modification de tableaux croisés dynamiques.
a. Collections
CalculatedFields
Collection de tous les champs calculés du rapport de tableau croisé dynamique spécifié.
ColumnFields
Collection de tous les champs du rapport de tableau croisé dynamique spécifié qui sont actuellement affichés comme des champs de colonne.
DataFields
Collection de tous les champs du rapport de tableau croisé dynamique spécifié qui sont actuellement affichés comme des champs de données.
HiddenFields
Collection de tous les champs de la source de données du rapport de tableau croisé dynamique spécifié qui ne sont pas affichés.
PageFields
Collection de tous les champs du rapport de tableau croisé dynamique spécifié qui s’affichent comme des champs de page.
RowFields
Collection de tous les champs du rapport de tableau croisé dynamique spécifié qui s’affichent comme des champs de ligne.
PivotFields
Collection de tous les champs de la source de données du rapport de tableau croisé dynamique spécifié, qu’ils soient affichés ou non.
VisibleFields
Collection de tous les champs de la source de données du rapport de tableau croisé dynamique spécifié qui sont affichés.
Toutes ces collections renvoient des objets PivotField représentant un champ de tableau croisé dynamique.
b. Propriétés
Les propriétés décrites ci-après...
Les graphiques
Un graphique est représenté par un objet Chart, contenu dans la collection Shapes (objets Shape) qui représente les formes ou les objets dessinés d’une feuille de calcul. Dans le cas d’un graphique, l’objet Shape représente la zone de graphique.
1. L’objet Shape
Cette section décrit les propriétés et méthodes les plus couramment utilisées pour la création et la mise en forme de zones graphiques.
a. Propriétés
Propriété |
Description |
Type |
Chart |
Renvoie un objet Chart qui représente le graphique contenu dans la forme. |
Objet |
Fill |
Renvoie un objet FillFormat qui représente la mise en forme du remplissage de la forme. |
Objet |
Line |
Renvoie un objet LineFormat qui contient les propriétés de mise en forme de la bordure de la forme. |
Objet |
TopLeftCell |
Renvoie un objet Range qui représente la cellule qui se trouve sous le coin supérieur gauche de la forme. |
Objet |
HasChart |
Indique si la forme contient un graphique. |
Booléen |
Height |
Hauteur de la forme en points. |
Réel simple |
Left |
Distance, en points, entre le bord gauche de la forme et le bord gauche de la colonne A. |
Réel simple |
Top |
Distance, en points, entre le bord supérieur de la forme et le bord supérieur de la feuille de calcul. |
Réel simple |
Width |
Largeur de la forme en points. |
Réel simple |
b. Méthodes
Copy
Copie la forme dans le Presse-papiers.
CopyPicture
Copie la forme dans le Presse-papiers en tant qu’image.
Delete
Supprime la forme.
2. L’objet Chart
Cette section décrit les propriétés et méthodes les plus couramment utilisées pour la création et la mise en forme de graphiques.
a. Collections
Axes
Collection de tous les axes du graphique.
SeriesCollections
Collection de toutes les séries de données du graphique.
b. Propriétés...
Exemple d’application
1. Présentation
L’exemple suivant permet de générer automatiquement des tableaux et graphiques statistiques sur la répartition du temps de travail des salariés par jour, semaine, activité...
Les données source sont situées dans le tableau de cellules nommé "TableauTemps" présenté ci-après.
Extrait des données source
Exemple de tableau croisé et graphique généré
2. Code VBA de l’exemple
La procédure Genere_Stat permet de générer l’ensemble des tableaux et graphiques. Elle fait appel à la procédure Creation_TCD pour la création des tableaux croisés dynamiques.
Option Explicit
Dim oWbk As Workbook
_____________________________________________________________
Sub Genere_Stat()
Dim oSheet As Worksheet
Dim oShape As Shape
Dim oChart As Chart
Dim iNbVision As Integer
Dim iNbAct As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
' Supprime les feuilles existantes
Set oWbk = ThisWorkbook
Application.DisplayAlerts = False
For i = oWbk.Sheets.Count To 2 Step -1
oWbk.Sheets(i).Delete
Next
Application.DisplayAlerts = True
' Ajoute les nouvelles feuilles
For i = oWbk.Sheets.Count + 1 To 5
oWbk.Sheets.Add after:=oWbk.Sheets(oWbk.Sheets.Count)
Next
oWbk.Sheets(2).Name = "SYNTHESE TACHE"
oWbk.Sheets(3).Name = "SYNTHESE ACTIVITE"
oWbk.Sheets(4).Name = "SYNTHESE JOUR"
oWbk.Sheets(5).Name = "SYNTHESE VISION"
' Tableau croisé dynamique Synthese Tache
Creation_TCD "TCD1", "Synthese Tache", "Activite", "Tache"
' Tableau...
Création d’un tableau croisé dynamique avec des sparklines
L’exemple suivant permet :
-
de créer et de personnaliser un tableau croisé dynamique en utilisant les collections d’objets PivotTables et PivotFields,
-
d’ajouter une mise en forme conditionnelle de type barre de données en utilisant la collection d’objets FormatConditions,
-
d’ajouter des graphiques sparkline en utilisant la collection d’objets SparklineGroups,
-
d’ajouter un segment pour filtrer les données sur le client en utilisant la collection d’objets SlicerCaches.
La feuille de calcul, créée au moyen du code VBA, se présente sous la forme suivante :
Pour exécuter cet exemple, effectuez les opérations suivantes :
Ouvrez le classeur Rapport des ventes.xlsx livré avec les exemples.
Enregistrez le classeur sous Rapport des ventes.xlsm.
Affectez le nom Ventes_2021 à l’ensemble des cellules de la feuille "Données Sources" (plage "A1:G278").
Insérez le code de la procédure suivante dans un nouveau module.
Lancez l’exécution du code.
Sub Tableau_Croise()
Dim wSheet As Worksheet
Dim i As Integer
Dim NbLignes As Integer
' Sélectionne la plage nommée (source de données)
Application.Goto Reference:="Ventes_2021"
' Supprime la feuille TCD_Produits si elle existe
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "TCD_Produits" Then
Application.DisplayAlerts = False
Worksheets(i).Delete...