Transpositions tridimensionnelles (Microsoft Excel)
En tant qu’ancien utilisateur intensif de Lotus 1-2-3 lors d’un travail précédent, Patti s’est TRÈS attachée à une fonctionnalité qui fait cruellement défaut dans Excel: la capacité de transposer des données en trois dimensions. La transposition bidimensionnelle est prise en charge dans Excel, mais Patti n’a pas trouvé de moyen de prendre une ligne, une colonne ou un tableau et de la répartir sur une pile de feuilles de calcul. C’était une fonction qui était utilisée quotidiennement par tout le monde dans son bureau des finances, et elle lui manque vraiment.
Patti a raison; il n’y a pas de fonction intégrée pour faire cela dans Excel. L’option la plus proche consiste à utiliser un tableau croisé dynamique et les fonctionnalités «Afficher les pages» qu’il inclut. En général, vous suivez ces étapes:
-
Créez un tableau croisé dynamique à partir de vos données comme vous le feriez normalement.
-
Placez la colonne à partir de laquelle vous souhaitez créer des feuilles de calcul dans la section «Filtre de rapport» du tableau croisé dynamique.
-
Affichez l’onglet Options du ruban. (Cet onglet n’est visible que lorsque vous travaillez sur un tableau croisé dynamique.)
-
Cliquez sur la flèche vers le bas en regard de l’outil Options, dans le groupe Tableau croisé dynamique à l’extrémité gauche du ruban.
-
Choisissez Afficher les pages de filtre de rapport. Excel vous demande de confirmer que vous souhaitez afficher les pages.
-
Cliquez sur OK.
Vous vous retrouvez avec une série de feuilles de calcul, une pour chaque entrée de la colonne que vous avez spécifiée à l’étape 2. Ces feuilles de calcul contiennent chacune une «page» du tableau croisé dynamique.
Si cela ne fait toujours pas ce que vous voulez, vous devrez alors recourir à une macro pour transposer les données. Une telle macro peut devenir assez complexe, mais il suffit de parcourir votre table de données et de déplacer chaque ligne (ou colonne) de données vers sa propre feuille de calcul.
À titre d’exemple, la macro suivante (Transpose3D) prendra chaque ligne d’une plage de cellules sélectionnée et placera cette ligne sur sa propre feuille de calcul nouvellement créée.
Sub Transpose3D() Dim rngTbl As Range Dim wsName As String Dim R As Integer Dim C As Integer Dim i As Integer Dim j As Integer Dim Killit As Integer Dim RCount As Integer Dim CCount As Integer Dim Table1() As Variant Dim Row1() As Variant RCount = Selection.Rows.Count CCount = Selection.Columns.Count If RCount < 2 Then MsgBox ("Error; Select a range with more than one row.") GoTo EndItAll End If wsName = ActiveSheet.Name R = ActiveCell.Row C = ActiveCell.Column Set rngTbl = Selection ReDim Table1(1 To RCount, 1 To CCount) ReDim Row1(1 To 1, 1 To CCount) Table1() = rngTbl.Value On Error GoTo Abend For i = 1 To RCount If SheetExists(wsName & "_Row_" & i) Then Killit = MsgBox("Sheet " & wsName & "_Row_" & i & _ " Already Exists!" & vbCrLf & _ " Cancel: Stop Transposition" & vbCrLf & _ " OK: Delete Sheet and Continue", vbOKCancel) If Killit = vbCancel Then GoTo EndItAll Application.DisplayAlerts = False Sheets(wsName & "_Row_" & i).Delete Application.DisplayAlerts = True End If Sheets.Add ActiveSheet.Name = wsName & "_Row_" & i Cells(R, C).Select For j = 1 To CCount Row1(1, j) = Table1(i, j) Next j Range(ActiveCell, ActiveCell.Offset(0, CCount - 1)) = Row1() Sheets(wsName).Select Next i GoTo EndItAll Abend: MsgBox ("Error in Routine Transpose3D.") EndItAll: Application.DisplayAlerts = True End Sub
Function SheetExists(SheetName As String) As Boolean Dim ws As Worksheet SheetExists = False For Each ws In ThisWorkbook.Worksheets If ws.Name = SheetName Then SheetExists = True Exit For End If Next ws End Function
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (11246) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Three-Dimensional_Transpositions [Transpositions en trois dimensions]
.