Plusieurs lignes dans une cellule en colonnes

Résolu
blocholivier -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'utilise une version de office 2013.

Je recherche une solution automatique sur Excel qui me permette transformer une cellule avec plusieurs lignes en colonnes.

Je m'explique, dans une cellule il y a environs 5 lignes misent à la ligne. Je voudrais que chaque ligne devienne une colonne et ceux automatiquement sur près de 1500 références...

Avez-vous une solution ?

7 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    Une possibilité en VBA si tu as quelques notions, quelle colonne est à traiter

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Essaie une macro de ce style

    A adapter à tes besoins

    Ici les cellules à scinder sont en colonne A d'une 1ere feuille et sont reportées dans les colonnes d'une 2nde feuille

    Sub encol()
    Dim Tableau() As String
    Dim i As Integer
    DL = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
    For n = 1 To DL
    'découpe la chaine en fonction des retour à la ligne
    'le résultat de la fonction Split est stocké dans un tableau
    Tableau = Split(Sheets(1).Range("A" & n), Chr(10))

    'boucle sur le tableau pour visualiser le résultat
    For i = 0 To UBound(Tableau)
    'Le résultat est inscrit dans la colonne x suivante de la feuille 2
    x = x + 1
    Sheets(2).Cells(1, x).Value = Tableau(i)
    Next i

    Next n
    End Sub

    Cdlmnt
    0
  3. blocholivier
     
    Oula pas du tout.
    La colonne a traité serait la "E" pour des copie sur les colonnes F, G, H, I, J et éventuellement K ... il peut y avoir jusqu'à 6 lignes en fait.
    0
  4. blocholivier
     
    J'avais pas vu ta réponse je test ça tout de suite :)
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      En fait je n'avais pas tout compris je crois
      Tu voudrais mettre en colonne POUR CHAQUE ligne et sur la même feuille ?
      Précise moi et je réadapte la macro en conséquence
      0
    2. blocholivier
       
      Oui en fait c'est ça. je viens de tester ton code ça marche niquel sauf le respect des lignes ....
      0
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Sub encol()
      Dim Tableau() As String
      Dim i As Integer
      DL = Sheets(1).Range("E" & Rows.Count).End(xlUp).Row
      For n = 1 To DL
      'découpe la chaine en fonction des retour à la ligne
      'le résultat de la fonction Split est stocké dans un tableau
      Tableau = Split(Sheets(1).Range("E" & n), Chr(10))
      x = 5
      'boucle sur le tableau pour visualiser le résultat
      For i = 0 To UBound(Tableau)
      'Le résultat est inscrit dans les colonnes
      x = x + 1
      Sheets(1).Cells(n, x).Value = Tableau(i)
      Next i

      Next n
      End Sub

      Voilà pour que ce soit sur la même feuille
      0
    4. blocholivier
       
      Ouahhhhh C'est excellent. Merci mille fois, ça me sauve la vie.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    la solution la plus simple est pourtant le VBA, tu vas essayer et je vais faire simple, et par petit coup

    sur ton Ruban as tu l'onglet Développeur, il se trouve après Données, Révision et Affichage

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Pour ma part j'avais préparé ce code

    Sub Eclater()
    Dim m, tablo, k As Variant
    For m = 2 To Range("E65536").End(xlUp).Row
    tablo = Split(Range("E" & m), Chr(10))
    For k = 0 To UBound(tablo)
    If k >= 0 Then Cells(m, 5 + k) = tablo(k)
    Next k
    Next m
    End Sub
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Salut Mike ;)
      On arrive à quelque chose de quasiment identique
      Bon WE
      Cdlmnt
      0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut Via,

    Oui tout a fait, j'attendais la réponse de Blocholivier voir s'il connaissait le VBA et s'il avait l'onglet Développeur pour créer un bouton activex et coller le code directement dedans mais vu sa réponse "Oula pas du tout." je suis resté prudent et avancé par petit coup, mais bon, il y a deux codes pour ceux à qui cela peut intéresser et puis avec les retours chariot dans les cellules il y a le Chr(13) etc ... qui n'ont pas été traités et peu faire l'objet d'autres demandes
    cordialement
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0