Transformation tableau en colonne de données

  • Initiateur de la discussion Initiateur de la discussion Lexan007
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

Lexan007

Guest
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
 
re,

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

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

Dernière édition:
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

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
 
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.
 
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:
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) ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
18
Affichages
459
  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
383
Réponses
12
Affichages
325
Retour