Skip to content
Learni
Voir tous les tutoriels
VBA & Automatisation

Comment créer des tableaux croisés dynamiques avec VBA en 2026

18 minINTERMEDIATE
Read in English

Introduction

Les tableaux croisés dynamiques sont essentiels pour analyser de grandes quantités de données dans Excel. Automatiser leur création avec VBA permet de gagner un temps considérable et de standardiser vos rapports. Ce tutoriel intermédiaire vous montre comment générer, configurer et actualiser un tableau croisé dynamique via du code VBA robuste. Vous apprendrez à manipuler le PivotCache et les champs de manière professionnelle. Chaque étape inclut du code complet et fonctionnel que vous pouvez copier directement dans vos macros.

Prérequis

  • Excel 2016 ou version ultérieure
  • Connaissances de base en VBA (modules, variables)
  • Un classeur Excel contenant des données tabulaires
  • L'onglet Développeur activé dans Excel

Initialiser le classeur et les données

Module1.bas
Sub CreerTCD()
    Dim wb As Workbook
    Dim wsData As Worksheet
    Set wb = ThisWorkbook
    Set wsData = wb.Sheets("Donnees")
    ' Vérifier que les données existent
    If wsData.Range("A1").Value = "" Then
        MsgBox "Aucune donnée trouvée", vbExclamation
        Exit Sub
    End If
End Sub

Ce code initialise le classeur actif et la feuille de données source. Il inclut une vérification basique pour éviter les erreurs si aucune donnée n'est présente.

Définir la plage source

Module1.bas
    Dim lastRow As Long
    Dim lastCol As Long
    Dim sourceRange As Range
    With wsData
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        Set sourceRange = .Range(.Cells(1, 1), .Cells(lastRow, lastCol))
    End With

Cette section calcule dynamiquement la plage des données source en utilisant End(xlUp) pour s'adapter automatiquement à la taille du tableau.

Créer le PivotCache

Module1.bas
    Dim pivotCache As PivotCache
    Set pivotCache = wb.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=sourceRange)

Le PivotCache est créé à partir de la plage source. Cela stocke les données en mémoire et permet une actualisation rapide du tableau croisé dynamique.

Créer le tableau croisé dynamique

Module1.bas
    Dim wsPivot As Worksheet
    Dim pivotTable As PivotTable
    Set wsPivot = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count))
    wsPivot.Name = "TCD_Automatique"
    Set pivotTable = pivotCache.CreatePivotTable( _
        TableDestination:=wsPivot.Range("A3"), _
        TableName:="MonTCD")

Un nouvel onglet est créé pour héberger le TCD. La méthode CreatePivotTable positionne le tableau à la cellule A3 avec un nom explicite.

Ajouter les champs au TCD

Module1.bas
    With pivotTable
        .PivotFields("Region").Orientation = xlRowField
        .PivotFields("Produit").Orientation = xlColumnField
        .PivotFields("Ventes").Orientation = xlDataField
        .PivotFields("Ventes").Function = xlSum
    End With

Les champs sont positionnés en lignes, colonnes et valeurs. La fonction de synthèse est définie sur Somme pour les ventes.

Bonnes pratiques

  • Toujours nommer explicitement les tableaux et caches
  • Utiliser des variables pour les plages dynamiques
  • Actualiser le TCD après modification des données source
  • Protéger le code contre les erreurs de plage vide
  • Documenter les noms de champs pour la maintenance

Erreurs courantes à éviter

  • Oublier de définir la plage source complète
  • Ne pas gérer les cas où la feuille pivot existe déjà
  • Utiliser des références absolues au lieu de End(xlUp)
  • Ignorer les erreurs de type de données dans les champs

Pour aller plus loin

Découvrez nos formations avancées sur l'automatisation Excel et VBA : https://learni-group.com/formations

Comment créer des tableaux croisés dynamiques avec VBA en 2026 | Learni