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:

  1. Créez un tableau croisé dynamique à partir de vos données comme vous le feriez normalement.

  2. Placez la colonne à partir de laquelle vous souhaitez créer des feuilles de calcul dans la section «Filtre de rapport» du tableau croisé dynamique.

  3. Affichez l’onglet Options du ruban. (Cet onglet n’est visible que lorsque vous travaillez sur un tableau croisé dynamique.)

  4. 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.

  5. Choisissez Afficher les pages de filtre de rapport. Excel vous demande de confirmer que vous souhaitez afficher les pages.

  6. 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].