Plusieurs lignes dans une cellule en colonnes

Résolu/Fermé
blocholivier - Modifié par blocholivier le 31/05/2014 à 17:00
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 - 31 mai 2014 à 18:03
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

Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 31/05/2014 à 17:21
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
via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
31 mai 2014 à 17:31
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
blocholivier
31 mai 2014 à 17:32
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
blocholivier
31 mai 2014 à 17:34
J'avais pas vu ta réponse je test ça tout de suite :)
0
via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
31 mai 2014 à 17:40
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
blocholivier
31 mai 2014 à 17:41
Oui en fait c'est ça. je viens de tester ton code ça marche niquel sauf le respect des lignes ....
0
via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
31 mai 2014 à 17:43
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
blocholivier
31 mai 2014 à 17:50
Ouahhhhh C'est excellent. Merci mille fois, ça me sauve la vie.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 31/05/2014 à 17:44
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
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
31 mai 2014 à 17:52
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
via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
31 mai 2014 à 17:55
Salut Mike ;)
On arrive à quelque chose de quasiment identique
Bon WE
Cdlmnt
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 31/05/2014 à 18:04
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