passer une liste de la verticale à l'horizontale

bertgrav

XLDnaute Occasionnel
bonjour,

dans le fichier joint, je donne un exemple avec des noms en colonne A et des prénoms en colonne B (feuille liste)
Je voudrais passer de cette liste verticale à une liste horizontale, en ne laissant par ligne qu'un seul nom et y en mettant tous les prénoms se reportant à ce nom dans les cellules voisine (voir feuille classement).

je n' arrive pas à trouver le code...

avez vous une idée ?

par avance merci

chantal
 

Pièces jointes

  • liste vers horizontal.xls
    13.5 KB · Affichages: 103

bertgrav

XLDnaute Occasionnel
Re : passer une liste de la verticale à l'horizontale

merci pour ta réponse qui il faut l'avouer est très intéressante.
par contre, comme ce fichier n'est qu'un exemple, je voudrais à l'aide d'une macro réaliser ce qui est fait en seconde page.
en réel le vrai fichier est composé de 300 lignes qui changent toutes les semaines, et il y a d'autres traitement à réaliser en // (ce que j'ai déjà trouvé).
je veux simplement avoir un bon code pour terminer le travail

amicalement

chantal
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : passer une liste de la verticale à l'horizontale

Voir PJ

Code:
Sub Essai()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("a2", [a65000].End(xlUp))
    If Not mondico.Exists(c.Value) Then
       mondico(c.Value) = c.Offset(0, 1) & " "
    Else
       mondico(c.Value) = mondico(c.Value) & c.Offset(0, 1) & " "
    End If
  Next c
  a = mondico.keys
  b = mondico.items
  For i = LBound(b) To UBound(b)
    Sheets(2).Cells(i + 2, 1) = a(i)
    c = Split(b(i), " ")
    For j = LBound(c) To UBound(c)
      Sheets(2).Cells(i + 2, 2 + j) = c(j)
    Next j
   Next i
End Sub

ou

Code:
Sub ColonneLigne()
   [A2:B1000].Sort key1:=[A:A], Header:=XlnoGuess
   LigneBD = 2
   LigneResult = 2
   Do While Cells(LigneBD, 1) <> ""
      temp = Cells(LigneBD, 1)
     Sheets(2).Cells(LigneResult, 1) = Cells(LigneBD, 1)
     c = 2
     Do While Cells(LigneBD, 1) = temp
        Sheets(2).Cells(LigneResult, c) = Cells(LigneBD, 2)
        c = c + 1
        LigneBD = LigneBD + 1
     Loop
     LigneResult = LigneResult + 1
  Loop
End Sub

JB
 

Pièces jointes

  • MatColLig2.xls
    31 KB · Affichages: 98
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 929
Messages
2 103 633
Membres
108 740
dernier inscrit
sawadogom947