Transformation tableau en colonne de données

Lexan007

XLDnaute Nouveau
Bonjour à tous,

Je souhaite élaborer une macro pour transformer un tableau de 150 lignes x 40 colonnes en un tableau de 3 colonnes uniquement. Mes connaissances ne me permettent malheureusement pas de trouver seul la solution alors je fais appel à votre aide.
En image, la structure de mon tableau initial sur l'onglet 1 et le résultat attendu sur l'onglet 2.

D'avance merci pour votre aide.
Conversion tableau Excel.JPG
 

gosselien

XLDnaute Barbatruc
re,

facilement réalisable (30 sec) avec POWER QUERY en option sur 2010-2013 et en natif sur 2016 (voir sur google) :D

oui bien :
VB:
Option Explicit
Sub DécroiserTableau()   '
'décroiser un tableau pour remettre en colonne et en faire un tcd
Dim a, b(), i As Long, j As Long, n As Long
a = Sheets("Onglet1").[a1].CurrentRegion.Value2  ' Nom de l'onglet à adapter  ' mise en mémoire
ReDim b(1 To (UBound(a, 1) - 1) * (UBound(a, 2) - 1), 1 To 5)
For i = 2 To UBound(a, 1)              ' hauteur de la zone
   For j = 2 To UBound(a, 2)           ' largeur de la zone
      If Not IsEmpty(a(i, j)) Then     ' si pas vide
         n = n + 1                     ' incrémenter ligne
         b(n, 1) = a(i, 1)             ' mettre data dans 1ere colonne
         b(n, 2) = a(1, j)             ' 2e colonne
         b(n, 3) = a(i, j)             ' 3e colonne
      End If
   Next
Next
Application.ScreenUpdating = False
'Restitution
With Sheets("feuil1").Cells(1).Resize(, 4)    ' 3 colonnes partant de la A ! nom de l'onglet à adapter
   .CurrentRegion.Clear                         ' effacer la feuille
   With .Offset(1).Resize(n)
      .FormulaLocal = b                         ' coller le tableau
   End With
End With
Application.ScreenUpdating = True
End Sub
P.
 

Pièces jointes

  • Exemple conversion tableau Excel.JPG.xlsx
    18 KB · Affichages: 31
Dernière édition:

Lexan007

XLDnaute Nouveau
Bonjour Gosselien,
J'ai adapté avec succès ta macro à mon tableau. Tout fonctionne parfaitement.
Est-ce que ça serait difficile d'inclure dans la macro la copie de la mise en forme comme dans le fichiers joint en exemple ?
 

Pièces jointes

  • test.xlsx
    9 KB · Affichages: 29

gosselien

XLDnaute Barbatruc
Bonjour,

ceci devrait aller (à la place de l'autre "restitution")

VB:
'Restitution
With Sheets("résultat").Cells(1).Resize(, 3)    ' 3 colonnes partant de la A ! nom de l'onglet à adapter
   .CurrentRegion.Clear                         ' effacer la feuille
   With .Offset(1).Resize(n)
      .FormulaLocal = b ' coller le tableau
   .Font.Name = "calibri"
   .Font.Size = 10
   .VerticalAlignment = xlCenter
   .BorderAround Weight:=xlThin
   .Borders(xlInsideVertical).Weight = xlThin
   .Borders(xlInsideHorizontal).Weight = xlThin
   .BorderAround Weight:=xlThin
   .HorizontalAlignment = xlCenter
   End With
End With
Application.ScreenUpdating = True
End Sub
 

Lexan007

XLDnaute Nouveau
Merci.
Ce code fonctionne bien, mais ne fait pas complétement ce que je souhaitais.
J'aimerai vraiment que ce soit un copié/collé des cellule source. J'ai besoin du contenu évidement et aussi la la couleur de la police et de la couleur de remplissage de la cellule. Ce sont vraiment ces 3 éléments qui me sont important.
 

gosselien

XLDnaute Barbatruc
Merci.
Ce code fonctionne bien, mais ne fait pas complétement ce que je souhaitais.
J'aimerai vraiment que ce soit un copié/collé des cellule source. J'ai besoin du contenu évidement et aussi la la couleur de la police et de la couleur de remplissage de la cellule. Ce sont vraiment ces 3 éléments qui me sont important.
Sorry, ça je ne sais pas faire :(

Voir la réponse de pierrejean (que je salue )
P.
 
Dernière édition:

Lexan007

XLDnaute Nouveau
Bonjour Pierrejean
Merci pour ton code. Il fonctionne parfaitement en faisant le copié/collé pour garder la mise en forme de la cellule. C'est exactement ce que je désirai !
Si je veux décaler la 1érer cellule de tableau, que dois-je modifier dans ton code (tableau en cellule c18:l50 par exemple) ?
 

Discussions similaires

  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
105

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 129
dernier inscrit
Atruc81500