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

Changer la structure d'un tableau des lignes et colonnes

  • Initiateur de la discussion Initiateur de la discussion zaknaster
  • 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 !

Z

zaknaster

Guest
Bonjour,

Je souhaiterai connaitre le moyen de restructurer les lignes et colonnes de mon tableau. A l'origine il s'agit d'un csv avec une délimitation classique par point virgule.

Prenons cet exemple de tableau très simple :

[table="width: 500"]
[tr]
[td]Maison[/td]
[td]Pièce[/td]
[td]Objet[/td]
[/tr]
[tr]
[td]Addr1[/td]
[td]Séjour[/td]
[td]Canapé[/td]
[/tr]
[tr]
[td]Addr1[/td]
[td]Chambre[/td]
[td]Lit[/td]
[/tr]
[tr]
[td]Addr1[/td]
[td]Cuisine[/td]
[td]Cafetière[/td]
[/tr]
[/table]

J'aimerai pouvoir afficher les résultatssur une ligne. Sachant que qu'il y a toujours un seul objet par pièce qui est dans la base pour un maximum de 5 pièces (donc 5 objets). Donc le tableau est suffisament structuré !

A la fin le résultat que j'aimerai avoir est le suivant :

[table="width: 500"]
[tr]
[td]Maison[/td]
[td]Piece_1[/td]
[td]Objet_1[/td]
[td]Piece_2[/td]
[td]Objet_2[/td]
[td]Piece_3[/td]
[td]Objet_3[/td]
[/tr]
[tr]
[td]Addr1[/td]
[td]Séjour[/td]
[td]Canapé[/td]
[td]Chambre[/td]
[td]Lit[/td]
[td]Cuisine[/td]
[td]Cafetière[/td]
[/tr]
[/table]

En fait il ne doit y avoir qu'une ligne par Maison.
Est-ce que vous avez connaissance d'une méthode pour m'aider la dessus ?

Merci d'avance
 
Re : Changer la structure d'un tableau des lignes et colonnes

Bonjour,

Voir PJ

Code:
Sub Regroupe2()
  Set d = CreateObject("Scripting.Dictionary")
  For Each c In Range("a2", [a65000].End(xlUp))
      d(c.Value) = d(c.Value) & c.Offset(0, 1) & "|" & c.Offset(0, 2) & "|"
  Next c
  [G2].Resize(d.Count) = Application.Transpose(d.keys)
  i = 2
  For Each c In d.keys
    a = Split(d(c), "|")
    Cells(i, "h").Resize(, UBound(a)) = a
    i = i + 1
  Next c
End Sub

JB
 

Pièces jointes

Re : Changer la structure d'un tableau des lignes et colonnes


Bonjour,

En effet ça marche bien.
Qu'en est-il si j'ai plusieurs colonnes de type "Maison" qui se répètent ?

En l'occurence, j'ai au moins 6 colonnes en plus sur le côté qui se répètent (autant de fois que Maison se répète).
Je ne parviens pas a les afficher sur le nouveau tableau généré.

voir PJ pour mieux comprendre mon besoin,

Merci pour ton aide.
 

Pièces jointes

Re : Changer la structure d'un tableau des lignes et colonnes

Bonjour,

Si je comprends bien ce passage :
For Each c In Range("a2", [a65000].End(xlUp))
d(c.Value) = d(c.Value) & c.Offset(0, 1) & "|" & c.Offset(0, 2) & "|"
Next c
[G2].Resize(d.Count) = Application.Transpose(d.keys)

Il permet de copier les données de la colonne A (A2 et +) vers la colonne G (G2 et +), mais sans faire de répétition. J'ai essayé de répéter la boucle pour les autres colonnes que je souhaite copier mais sans succès... Je ne vois pas comment m'y prendre.

Merci
 
- 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.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…