Créer un Slicer (segment) pour un Tableau Croisé Dynamique (TCD), Excel VBA
Voici un code VBA détaillé pour créer un Slicer (segment) pour un Tableau Croisé Dynamique (TCD) dans Excel, avec une explication longue et détaillée en français.
Code VBA détaillé pour créer un Slicer pour un Tableau Croisé Dynamique (TCD)
Sub CreerTableauCroiseAvecSlicer() Dim ws As Worksheet Dim pivotCache As PivotCache Dim pivotTable As PivotTable Dim pivotRange As Range Dim slicer As SlicerCache ' Étape 1 : Définir la feuille de travail et la plage de données Set ws = ThisWorkbook.Sheets("Sheet1") ' Remplacez "Sheet1" par le nom de votre feuille ' Définir la plage de données qui servira à la création du TCD Set pivotRange = ws.Range("A1:D100") ' Modifiez cette plage en fonction de vos données réelles ' Étape 2 : Créer un cache de Pivot (Pivot Cache) basé sur la plage de données Set pivotCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=pivotRange) ' Étape 3 : Créer un nouveau Tableau Croisé Dynamique sur une nouvelle feuille Set pivotTable = ws.PivotTables.Add(PivotCache:=pivotCache, TableDestination:=ws.Range("F1")) ' Étape 4 : Définir les champs du Tableau Croisé Dynamique With pivotTable ' Ajouter les champs dans le Tableau Croisé Dynamique : "Category", "Amount", etc. doivent être les noms réels des colonnes de vos données .PivotFields("Category").Orientation = xlRowField ' Remplacez "Category" par le nom de votre champ de ligne .PivotFields("Amount").Orientation = xlDataField ' Remplacez "Amount" par le nom de votre champ de données .PivotFields("Region").Orientation = xlColumnField ' Remplacez "Region" par le nom de votre champ de colonne End With ' Étape 5 : Créer un Slicer et le connecter au Tableau Croisé Dynamique Set slicer = ThisWorkbook.SlicerCaches.Add(pivotTable, "Category") ' "Category" est le champ pour le Slicer ' Insérer le Slicer dans la feuille de travail slicer.CreateSlicer SlicerDestination:=ws.Range("J1") ' Optionnel : Ajuster la mise en forme du Slicer si nécessaire With slicer.Slicers(1) .Shape.Width = 200 .Shape.Height = 200 .Top = 100 .Left = 300 End With End Sub
Explication détaillée de chaque étape :
1. Définir la feuille de travail et la plage de données :
- On définit d’abord la feuille de travail (
ws
) où le Tableau Croisé Dynamique (TCD) sera créé. - La plage de données (
pivotRange
) représente la plage de cellules qui sera utilisée pour créer le TCD. Ajustez cette plage en fonction de vos données réelles.
2. Créer un cache de Pivot (Pivot Cache) :
- Le cache de Pivot est un objet interne d’Excel qui stocke les données sources pour le TCD. Il est créé avec la méthode
PivotCaches.Create
, où nous spécifions la plage de données (pivotRange
) comme source.
3. Créer le Tableau Croisé Dynamique :
- Après avoir créé le cache de Pivot, nous créons un nouveau TCD à l’aide de la méthode
PivotTables.Add
. Le TCD sera placé à un emplacement spécifique dans la feuille de travail (TableDestination:=ws.Range("F1")
), ici dans la celluleF1
.
4. Définir les champs du Tableau Croisé Dynamique :
- Une fois le TCD créé, nous définissons les champs à utiliser dans le TCD. Dans cet exemple :
Category
est ajouté dans la zone des lignes.Amount
est ajouté dans la zone des données.Region
est ajouté dans la zone des colonnes.- Remplacez ces noms de champs par ceux correspondant à vos données.
5. Créer et ajouter le Slicer :
- Nous ajoutons un Slicer qui est lié au TCD à l’aide de la méthode
SlicerCaches.Add
, où nous spécifions le champ pour lequel le Slicer sera créé (dans ce cas,Category
). - Le Slicer est ensuite inséré dans la feuille de travail avec la méthode
CreateSlicer
, et sa position peut être ajustée via l’argumentRange
.
6. Optionnel : Ajuster la mise en forme du Slicer :
- Vous pouvez ajuster la taille et la position du Slicer en utilisant les propriétés
Shape.Width
,Shape.Height
,Top
etLeft
.
Notes supplémentaires :
- Assurez-vous que vos données contiennent les colonnes (champs) que vous souhaitez utiliser dans le TCD et le Slicer.
- Le Slicer peut être lié à plusieurs TCDs si ceux-ci partagent le même champ.
- Modifiez la plage (
Range
) et les noms de champs en fonction de vos propres données et de la disposition de votre feuille.
Ce code automatisera la création du Tableau Croisé Dynamique et du Slicer associé dans Excel à l’aide de VBA.