Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment construire une liste à partir d'un tableau (pas croisé d yn

1 réponse
Avatar
Richard Grenier
J'ai déjà un tableau dans une feuille Excel. Je voudrais, sans faire du
copier-coller, demander à Excel de me construire une liste à partir du
tableau, donc décroiser le tableau. Le tableau a plusieurs niveaux en X et en
Y.

Exemple Direction1 Direction2
Service1 Service2 Service1
Service2
Région1 Ville1 <data> <data> <data> <data>
Ville2 <data> <data> <data> <data>
Région2 Ville1 <data> <data> <data> <data>
Ville2 <data> <data> <data> <data>

1 réponse

Avatar
Pita
Bonjour,
S'il s'agissait en effet d'un tableau croisé dynamique.... en
double-cliquant sur le grand total... Excel vous produirait une nouvelle
feuille contenant les lignes de détail qui ont servi à construire le tableau
et votre problème serait pratiquement résolu...

Étant donné que ce n'est pas le cas, je vous suggèrerais d'insérer au "ras"
du tableau c'est à dire immédiatement au dessus et devant la zone des données
proprement dites (variables cumulées) une ligne et une colonne d'entête
destinées à recuillir (via une formule) la concaténation des clés des
différents niveaux caractéristiques des colonnes ou des lignes concernées...
les clés de différents niveaux horizontal ou vertical étant séparées dans
cette concaténation par un caractère conventionnel arbitraire tel que "/" ou
"" ou "$" qui n'apparaît pas dans les libellés d'en-tête de lignes ou de
colonnes, ceci pour éviter toute confusion.
Vous aurez ainsi dans votre ligne d'entête de colonne des cellules contenant:
"Direction1/Service1" suivie horizontalement de "Direction1/Service2"....
"Directionp/Servicen"
et...
une colonne d'entête de ligne contenant:
"Région1/Ville1" suivie verticalement de "Région1/Ville2"
....."Régionq/Villet"

En supposant vore tableau rangé dans la "Feuil1" et en nommant ces deux
zones d'entête de ligne et de colonne respectivement "Enteteligne" et
"EnteteColonne" ainsi que "début" la cellule intersection de cette ligne et
cette colonne d'entête (Celle ci précéde le début de chacune de ces deux
zones), l'utilisation de la macro suivante devrait règler votre problème:
------------------------------------------------
Sub DécroiseTableau()
'
' Macro4 Macro
' Macro enregistrée le 2004-10-27 par JPP'

'
Sheets("Feuil1").Select
Sheets.Add
feuilleRésultat = ActiveSheet.Name
Application.Goto Reference:="Entetecolonne"
Set col = Selection
Application.Goto Reference:="Enteteligne"
Set lig = Selection
Application.Goto Reference:="début"
Set debut = Selection
Sheets(feuilleRésultat).Select
Range("A2").Select
icol = 0
For Each zcol In col
icol = icol + 1
zcole = zcol.Value


ilig = 0
For Each zlig In lig
ilig = ilig + 1
zligne = zlig.Value
X = zcole & "/" & zligne & "/" & debut.Offset(ilig, icol).Value
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = X
Next zlig
Next zcol
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:=True, Other:=True,
OtherChar:= _
"/", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1),
Array(4, 1), Array(5, 1)) _
, TrailingMinusNumbers:=True

ActiveSheet.Name = "Résultat"
End Sub
-------------------------------------------------
Bonne chance,
JPP


en supposant que vos en-têtes de lignes et de colonnes sont répétées dans
les cellules voisines des lignes et des colonnes même s'il s'agit des mêmes
valeurs (Ceci implique un travail préalable de mise en forme parce qu'en
général... la présentation des tableaux force à la suppression des clés
suivantes identiques...)

"Richard Grenier" wrote:

J'ai déjà un tableau dans une feuille Excel. Je voudrais, sans faire du
copier-coller, demander à Excel de me construire une liste à partir du
tableau, donc décroiser le tableau. Le tableau a plusieurs niveaux en X et en
Y.

Exemple Direction1 Direction2
Service1 Service2 Service1
Service2
Région1 Ville1 <data> <data> <data> <data>
Ville2 <data> <data> <data> <data>
Région2 Ville1 <data> <data> <data> <data>
Ville2 <data> <data> <data> <data>