Changer la structure d'un tableau des lignes et colonnes

zaknaster

XLDnaute Nouveau
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 :

MaisonPièceObjet
Addr1SéjourCanapé
Addr1ChambreLit
Addr1CuisineCafetière

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 :

MaisonPiece_1Objet_1Piece_2Objet_2Piece_3Objet_3
Addr1SéjourCanapéChambreLitCuisineCafetière

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
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Copie de Regroupe.xls
    43.5 KB · Affichages: 106

zaknaster

XLDnaute Nouveau
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

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

  • Copie de Regroupe_v2.xls
    45 KB · Affichages: 90

zaknaster

XLDnaute Nouveau
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
 

Statistiques des forums

Discussions
312 318
Messages
2 087 208
Membres
103 493
dernier inscrit
Vidal Salvador