TOP

Tableaux non pivotants (Unpivot)

Description

Tableaux récapitulatifs (pivot tables) sont un outil puissant dans l’analyse des données. Cependant, il est parfois nécessaire de déployer (unpivot) données agrégées (autrement appelées « redressement » ou démontage des données) pour les mettre dans un format de tableau régulier afin que toutes les valeurs similaires soient dans la même colonne. Cela est nécessaire, par exemple, pour créer un graphique ou un rapport nouveau ou modifié.

Vous pouvez effectuer cette conversion dans Excel à l'aide de l'outil Power Query, mais ce n'est ni rapide ni très pratique. Essayons une approche différente pour déployer des données récapitulatives sans Power Query.


Formulation du problème

Imaginez que nous devions convertir un ensemble de données d'un tableau croisé dynamique en un tableau plat (Unpivot) :

Une telle tâche est mieux résolue à l'aide d'une macro. Écrivons notre propre procédure qui pourra convertir un tableau croisé (table croisée) avec des données en un format de tableau régulier (plat), ce qui nous permettra à nouveau créer des tableaux récapitulatifs avec des données modifiées ou complétées.

Code VBA pour la procédure UnPivotTable

Ouvrez l'éditeur Visual Basic ( Service - Macro - Editeur Visual Basic ), insérez le nouveau module (Insert - Module) et copiez-y le texte de cette macro :

Sub UnPivotTable()
  'moonexcel.com.ua
  Dim InVal    As Variant
  Dim OutVal() As Variant
  Dim j, k, i  As Long
  Dim NewSheet
  
  i = 1
  InVal = Selection.Formula
  ReDim OutVal(1 To Selection.Count, 1 To 3)
  
  For j = 2 To UBound(InVal, 1)
    For k = 2 To UBound(InVal, 2)
      If InVal(j, k) <> "" Then
        OutVal(i, 1) = InVal(j, 1)
        OutVal(i, 2) = InVal(1, k)
        OutVal(i, 3) = InVal(j, k)
        i = i + 1
      End If
    Next k
  Next j
  
  Set NewSheet = Worksheets.Add
  NewSheet.Range("A1").Resize(UBound(OutVal, 1), 3).Value = OutVal
End Sub 

Après cela, vous pouvez fermer l'éditeur VBA, revenir à Excel, sélectionner la table source (complètement, avec l'en-tête et la première colonne avec les pays) et exécuter notre macro via le menu Service - Macros - Macros (Tools - Macro - Macros) (ALT+F8) .

La macro insérera une nouvelle feuille dans le classeur et créera une nouvelle version reconstruite du tableau sélectionné. Vous pouvez travailler avec une telle table "avec le programme complet", en utilisant tout l'arsenal d'outils Excel pour traiter et analyser de grandes tables.

Articles Liés: