Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Transposition d'un tableau à double entrée.... Macro ?

jozerebel

XLDnaute Occasionnel
Bonsoir à tous !

Besoin de votre aide...

J'ai un tableau à double entrée avec des mois en colonne et des organismes en lignes.
Afin de le retraiter avec un tableau croisée dynamique, j'ai besoin de transposer ce tableau comme indiqué dans la PJ....

Et je sèche...

D'avance merci pour votre aide précieuse !
 

Pièces jointes

  • xlsdl2.xlsx
    12.9 KB · Affichages: 24

chris

XLDnaute Barbatruc
Bonjour

Faisable en quelques clics après mise sous forme de tableau structuré de la source via PowerQuery
Ce lien n'existe plus

Cependant dans ton exemple les en-têtes ne différencient même pas juin et juillet....
 

vgendron

XLDnaute Barbatruc
Hello

une solution par macro
VB:
Sub Transposer()
Dim TabInit() As Variant
Dim TabFinal() As Variant
With Sheets("Initial")
    Lastline = .Range("A" & .Rows.Count).End(xlUp).Row
    LasCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    '.Range("A1").Resize(Lastline, LasCol).Select
    TabInit = .Range("A1").Resize(Lastline, LasCol).Value
    ReDim TabFinal(1 To UBound(TabInit, 1) * UBound(TabInit, 2), 1 To 4)
End With
indi = 1
For i = LBound(TabInit, 1) + 1 To UBound(TabInit, 1)
    TabFinal(indi, 1) = TabInit(i, 1)
    TabFinal(indi, 2) = TabInit(i, 2)
    For j = 3 To UBound(TabInit, 2)
        TabFinal(indi, 4) = TabInit(i, j)
        TabFinal(indi, 3) = TabInit(1, j)
        indi = indi + 1
        TabFinal(indi, 1) = TabInit(i, 1)
        TabFinal(indi, 2) = TabInit(i, 2)
    Next j
    
Next i
Sheets("Souhait").Range("A2").Resize(UBound(TabFinal, 1), UBound(TabFinal, 2)) = TabFinal
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…