Les tableaux croisés dynamiques dans Excel sont essentiels pour faciliter la compréhension et la compréhension des données. Un tableau croisé dynamique peut condenser et écraser les données dans des structures significatives. Les utilisateurs de MS Excel les ont largement adoptés dans l'industrie des données.

Saviez-vous que vous pouviez automatiser vos tableaux croisés dynamiques dans Excel et les créer en un seul clic? MS Excel s'intègre bien avec VBA et est devenu un excellent outil pour automatiser les tâches répétitives.

Voici comment vous pouvez automatiser un tableau croisé dynamique avec une macro dans MS Excel VBA.

Utiliser un ensemble de données de pratique

Vous pouvez télécharger et utiliser un mannequin ensemble de données de Tableau suivre le script VBA dans ce guide. Le code VBA fonctionnera avec n'importe quel autre ensemble de données, avec quelques ajustements de base. Avant de commencer, assurez-vous d'avoir macros activées dans votre classeur Excel.

Il existe quelques colonnes essentielles que vous pouvez utiliser dans le tableau croisé dynamique. Pour comprendre les nuances et la structure finale du tableau, vous pouvez

créer un tableau croisé dynamique de base manuellement avec les éléments suivants :

  • Filtre: Région
  • Lignes: Sous-catégorie
  • Colonnes: État
  • Valeurs: Ventes

Le pivot final devrait ressembler à ceci :

Cependant, vous pouvez laisser VBA le faire automatiquement au lieu de le préparer manuellement.

Comment créer automatiquement des tableaux croisés dynamiques dans Excel

Pour automatiser vos tableaux croisés dynamiques avec VBA, ouvrez un nouveau fichier Excel et renommez les feuilles comme suit :

  • Première feuille : Macro
  • Deuxième feuille : Données

Le Macro feuille contient le script de macro, tandis que la Données feuille contient vos données. Sur la feuille macro, vous pouvez insérer n'importe quelle forme de votre choix et lui attribuer la macro. Faites un clic droit sur la forme et cliquez sur Affecter une macro.

Dans la boîte de dialogue suivante, cliquez sur le nom de votre macro et cliquez sur OK. Cette étape affecte la macro à la forme.

1. Ouvrez l'éditeur de codage Excel VBA

Presse Alt + F11 pour ouvrir l'éditeur de code. Une fois dans l'éditeur de code, faites un clic droit sur le nom du fichier, suivi de Insérer et Module. Il est important de se rappeler que vous allez écrire tout le code VBA dans un module avant de l'exécuter.

C'est une bonne pratique d'utiliser un nom de module qui résonne avec l'objectif du code. Comme il s'agit d'une démo, vous pouvez définir le nom du module comme suit :

sous pivot_demo()

Le nom du module se termine par Sous-titre de fin, qui est la commande de fin d'un module :

Fin Sous

2. Déclarer des variables

Dans le module, commencez par déclarer des variables pour stocker certaines valeurs définies par l'utilisateur que vous utiliserez dans le script. Vous pouvez utiliser le Faible déclaration pour déclarer des variables, comme suit :

Dim PSheet Comme Feuille de calcul, DSheet Comme Feuille de travail
Dim PvtCache Comme PivotCache
Dim TablePvt Comme Tableau croisé dynamique
Dim PvtRange Comme Gamme
Dim Last_Row Comme Long, Last_Col Comme Long
Dim sht1 comme Une variante

Vous utiliserez ces variables pour les éléments suivants :

  • PSheet : La feuille de destination, où VBA créera un pivot.
  • DSheet : La fiche technique.
  • PvtCache : Un cache de pivot contient le pivot.
  • TablePvt : L'objet tableau croisé dynamique.
  • PvtPlage : Une plage de données pour le pivot.
  • Last_Row et Last_Col : Dernière ligne et colonne remplies dans la feuille de données (DSheet).
  • Sht1 : Cette variable est une variante.

3. Supprimer les avertissements et les messages

Les erreurs, avertissements et messages inutiles ralentissent vos codes VBA. En supprimant ces messages, vous pouvez considérablement accélérer le processus.

Utilisez le code suivant :

Sur Erreur Reprendre Suivant

Avec Application
.DisplayAlerts = FAUX
.ScreenUpdating = FAUX
FinAvec

Où:

  • En cas d'erreur, reprendre ensuite: Cette clause supprime toutes les erreurs d'exécution.
  • Application: L'application fait référence à MS Excel.
  • Afficher les alertes : La propriété DisplayAlerts définit s'il faut afficher les alertes.
  • Mise à jour de l'écran : Cette propriété définit s'il faut mettre à jour les modifications en temps réel ou seulement une fois que le code a fini de s'exécuter.

Lorsque ce code s'exécute, il supprime les alertes, les avertissements et les messages qu'Excel afficherait autrement. Vous pouvez désactiver les paramètres DisplayAlerts et ScreenUpdating en définissant leurs valeurs sur FAUX.

Vers la fin du code, vous pouvez les réactiver en définissant la valeur comme Vrai.

4. Supprimer toutes les feuilles de pivot existantes

Pour créer un nouveau tableau croisé dynamique, vous avez deux options. Tout d'abord, supprimez la feuille de pivot existante et utilisez VBA pour créer une nouvelle feuille pour stocker le pivot. Vous pouvez également utiliser une feuille de calcul existante pour contenir le pivot.

Dans ce guide, créons une nouvelle feuille de pivot pour stocker le tableau croisé dynamique.

Le pour chaque la boucle parcourt chaque feuille du classeur et stocke le nom de la feuille dans le sht1 variable. Vous pouvez utiliser n'importe quel nom de variable (sht1) pour contenir le nom de la feuille. La boucle parcourt chaque feuille du classeur en cours, en recherchant une avec le nom spécifique (Pivot).

Lorsque le nom de la feuille correspond, il supprime la feuille et passe à la feuille suivante. Une fois que le code a vérifié toutes les feuilles, il sort de la boucle et passe à la partie suivante du code, qui ajoute une nouvelle feuille, Pivot.

Voici comment procéder :

PourChaquesht1DansActiveWorkbook.Des feuilles de calcul
Si sht1.Name = "Pivot" Alors
sht1.Supprimer
FinSi
Prochain sht1

Des feuilles de calcul. Ajouter. Nom = "Pivot"

5. Définir la source de données et les feuilles de pivot

Il est indispensable de créer des variables pour stocker les références des fiches Pivot et Data. Ceux-ci fonctionnent comme des raccourcis, que vous pouvez référencer dans le reste du code.

Set PSheet = Feuilles de calcul("Pivot")
Set DSheet = Feuilles de calcul("Données")

6. Identifier la dernière ligne et colonne utilisée

Cette partie du code fonctionne de manière dynamique, car elle dimensionne la dernière ligne et colonne remplies dans les données.

Dernière_ligne = DSheet. Cellules (lignes. Compter, 1).Fin (xlUp).Row
Last_Col = DSheet. Cellules (1, Colonnes. Compter).Fin (xlVersGauche).Colonne
Ensemble PvtRange = DSheet. Cellules(1, 1).Redimensionner (Last_Row, Last_Col)

Où:

  • Dernière rangée: Variable pour stocker le dernier numéro de ligne rempli, c'est-à-dire 9995
  • Dernier_col: Variable pour stocker le dernier numéro de colonne rempli, c'est-à-dire 21
  • PvtPlage : PvtRange fait référence à toute la plage de données pour le pivot

7. Créer un cache croisé dynamique et un tableau croisé dynamique

Un cache pivot contient le tableau croisé dynamique; par conséquent, vous devez créer un cache avant de créer un tableau croisé dynamique. Vous devez utiliser les références de syntaxe de VBA pour créer le cache de pivot dans la feuille Pivot.

En référençant le cache pivot, vous devez créer un tableau croisé dynamique. Dans le cadre du tableau croisé dynamique, vous pouvez définir la feuille, la référence de cellule et le nom du tableau croisé dynamique.

Définissez PvtCache = ActiveWorkbook. PivotCaches. Créer (SourceType :=xlDatabase, SourceData :=PvtRange).CreatePivotTable (TableDestination :=PSheet. Cellules (2, 2), NomTable :="MUODémoTable")
Définissez PvtTable = PvtCache. CreatePivotTable (TableDestination :=PSsheet. Cellules (1, 1), NomTable :="MUODémoTable")

Où:

  • ActiveWorkbook : Le classeur actuel dans lequel se trouve la feuille Données et pivot.
  • PivotCaches. Créer: Syntaxe par défaut pour créer un cache pivot.
  • Type de Source: Puisque vous avez les données dans le classeur, vous pouvez les définir comme xlBase de données. Certaines autres options incluent xlConsolidation, xlExterne, ou xlTableau croisé dynamique.
  • Données source: Vous pouvez référencer la plage de pivot précédente en tant que données source.
  • Créer un tableau croisé dynamique : Commande par défaut pour créer le tableau croisé dynamique.
  • TableDestination : Vous devez spécifier les références de feuille et de cellule où vous souhaitez créer le pivot.
  • Nom de la table: Spécifiez un nom de tableau croisé dynamique.
  • Créer un tableau croisé dynamique : Commande par défaut pour créer le tableau croisé dynamique dans le cache de pivot.

8. Insérer des lignes, des colonnes, des filtres et des valeurs

Puisque le tableau croisé dynamique est prêt, vous devez commencer à ajouter les paramètres dans les filtres, les lignes, les colonnes et les valeurs d'agrégation. Vous pouvez utiliser le VBA champs pivots commande pour commencer à déclarer les détails.

Pour ajouter des valeurs de filtre :

Avec ActiveSheet. Tableaux croisés dynamiques("MUODémoTable").PivotFields("Région")
.Orientation = xlChampPage
FinAvec

Pour ajouter des valeurs de ligne :

Avec ActiveSheet. Tableaux croisés dynamiques("MUODémoTable").PivotFields("Sous-catégorie")
.Orientation = xlRowField
FinAvec

Pour ajouter des valeurs de colonne :

Avec ActiveSheet. Tableaux croisés dynamiques("MUODémoTable").PivotFields("État")
.Orientation = xlChampColonne
FinAvec

Pour ajouter des valeurs d'agrégation :

Avec ActiveSheet. Tableaux croisés dynamiques("MUODémoTable").PivotFields("Ventes")
.Orientation = xlChampDonnées
.Fonction = xlSomme
FinAvec

Il est essentiel de noter que vous devez référencer la feuille active (feuille de pivot), suivie du nom du tableau croisé dynamique et du nom de la variable. Lorsque vous devez ajouter le(s) filtre(s), ligne(s) et colonne(s), vous pouvez basculer entre différentes syntaxes, notamment les suivantes :

  • xlPageField : Pour ajouter des filtres.
  • xlRowField : Pour ajouter des lignes.
  • xlRowField : Pour ajouter des colonnes.

Enfin, vous pouvez utiliser le xlDataField commande pour calculer les agrégations de valeurs. Vous pouvez utiliser d'autres fonctions d'agrégation telles que xlSum, xlAverage, xlCount, xlMax, xlMin et xlProduct.

9. Exécution du code Excel VBA pour créer des pivots automatiques

Enfin, lorsque tout le programme est prêt, vous pouvez le lancer en appuyant sur F5 ou en cliquant sur le jouer bouton. Lorsque vous revenez à la feuille Pivot de votre classeur, vous verrez qu'un nouveau tableau croisé dynamique est prêt à être examiné.

Si vous voulez voir une exécution pas à pas de la façon dont la commande de code se déroule ligne par ligne, vous pouvez naviguer jusqu'à l'éditeur de code et appuyer sur F8 plusieurs fois. De cette façon, vous pouvez voir comment fonctionne chaque ligne de code et comment VBA crée automatiquement vos pivots.

Apprendre à coder automatiquement les tableaux croisés dynamiques

Les pivots ne sont pas limités à MS Excel uniquement. Les langages de programmation comme Python vous permettent de créer des pivots optimisés avec seulement quelques lignes de code.

L'optimisation des données ne peut pas être plus facile que cela. Vous pouvez sélectionner et choisir efficacement vos commandes en Python et réaliser facilement une structure de pivot semblable à celle d'Excel.