XL 2016 [Résolut] Convertir des lignes d'un tableau en colonnes

Zdz16

XLDnaute Occasionnel
Bonjour à tous et au Forum,

Bonne année à tous et au forum, hé, hé le mois n'est pas fini:)

je vous soumet une petite question que je bloque dessus.
Je voudrai convertir des données sous forme de tableau en données sous forme de colonnes.
via l'utilisation d'une macro ou d'une routine VBA que j'attacherai à un bouton par exemple.
Ces données sont affectées à une clé composée de plusieurs segments et les valeurs sont pour une période (Le mois)
Je joint un fichier qui contient 2 feuilles
La feuille 'Source' est la matrice dont chaque ligne contient la Cle, valeurs pour chaque mois (Période)
La feuille 'Résultats' est la feuille contenant ce que j'aimerai obtenir une colonne période (mois), les colonnes de la clé, et les colonnes de valeurs.
L'objectif est d'utiliser la feuille Résultat pour importation dans une DB.

Merci d'avance pour votre aide et prenez soin de vous et votre famille

Cordialement
 

Pièces jointes

  • XLD.xlsx
    11.7 KB · Affichages: 20

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Zdz16, @pierrejean ;),

Essayez le code :
VB:
Sub EnColonne()
Dim t, r, i&, j&, n&

   With Sheets("Source")
      t = Range("a1").CurrentRegion
   End With
  
   ReDim r(1 To (UBound(t) - 1) * (UBound(t, 2) - 3), 1 To 6)
   For j = 1 To 3: r(1, j + 1) = t(1, j): Next
   r(1, 1) = "Periode": r(1, 5) = t(2, 4): r(1, 6) = t(2, 5): n = 1
   For i = 3 To UBound(t)
      For j = 4 To UBound(t, 2) - 1 Step 2
         n = n + 1
         r(n, 1) = t(1, j):
         r(n, 2) = t(i, 1): r(n, 3) = t(i, 2): r(n, 4) = t(i, 3)
         r(n, 5) = t(i, j): r(n, 6) = t(i, j + 1)
      Next j
   Next i
  
   With Sheets("Resultats")
      .Columns("a:f").ClearContents
      .Columns("a:f").Resize(n) = r
   End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

=>chris
Merci d' PWquerité la chose, car je m'arrachais les tifs. ;)
Il faut charger le tableau source en cochant Mon tableau contient des entêtes ?
Je bloquais sur cette étape.
(Donc PW n'est pas trop impacté par les cellules fusionnées alors ?)
 

chris

XLDnaute Barbatruc
RE

Il faut l'aider : créer une requête vide et indiquer dans la barre de formule
=Excel.CurrentWorkbook(){[Name="Data"]}[Content]

si la plage est nommée Data

On peut aussi faire la requête comme sur un classeur externe mais pour ma part j'évite
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou