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 :
Categoryest ajouté dans la zone des lignes.Amountest ajouté dans la zone des données.Regionest 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,TopetLeft.
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.