Répartir contenu d'une cellule sur des lignes distinctes [Résolu/Fermé]

Signaler
-
 Fitia -
Bonjour,

Je cherche répartir les données d'une cellule excel sur plusieurs lignes et non sur plusieurs colonnes comme le fait excel avec la touche convertir.

Mon exemple : X ;Y ; Z

Je voudrais avoir :
X
Y
Z
avec les données des autres colonnes correspondantes dupliquées.

Je sais que c'est possible par macro, mais je ne m'y connais pas. Si vous pouviez me donner les codes que je pourrai adapter

Je vous serai reconnaissante de votre aide,

Sinon mon fichier
http://www.cjoint.com/c/EIskFtDr0Ij

Fitia

4 réponses

Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
509
Bonjour,

Tu ne peux pas transposer une plage de 9062 lignes sur un fichier *.xls qui ne contient que 256 colonnes.

A+
Bonjour Gyrus,

Merci pour ta réponse mais je ne comprends pas ce que tu veux dire.

Ce que je voudrais faire c'est répartir les données d'une seule cellule(cellule de la colonne H) de la colonne sur des lignes distinctes et dupliquer avec les données des colonnes. Et des lignes on a un nombre illimité non?
<Sub ExtractionNombres()
Dim Tableau() As String
Dim i As Integer

ActiveSheet.Activate
Range("H1").Activate

Do

x = ActiveCell.Value
Tableau = Split(x, ", ")

For i = 0 To UBound(Tableau)
ActiveCell.Value = Tableau(i)
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
If i <> UBound(Tableau) Then Selection.EntireRow.Insert
Next i

Loop Until ActiveCell = ""

End Sub></code>

voici une partie du code qui marche bien pour répartir les données de la cellule H mais ne duplique pas le contenu des autres colonnes
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
509
Je comprends mieux à la lecture du code.
Ta procédure utilise la fonction Split qui renvoie un tableau contenant les sous-chaînes délimitées par le séparateur ",".

Pour placer les éléments du tableau sur plusieurs lignes dans la même cellule, tu peux utiliser le code suivant :
Sub ExtractionNombres()
Dim Tableau() As String, Texte As String
Dim DerCol As Integer, Col As Integer, i As Integer
With Worksheets("JIRA Data")
DerCol = .Cells(1, Columns.Count).End(xlToLeft).Column
For Col = 1 To DerCol
Tableau = Split(.Cells(1, Col).Value, ";")
For i = 0 To UBound(Tableau)
Texte = Texte & Tableau(i) & Chr(10)
Next i
.Cells(1, Col) = Left(Texte, Len(Texte) - 1)
Texte = ""
Next Col
End With
End Sub

Le traitement est effectué sur toutes les cellules de la ligne 1.

A+
Merci pour ton temps Gyrus, j'apprécie ton aide.

Voilà, j'ai décortiqué le code. J'y suis presque. Le dernier Hic c'est qu'avec le code ci-bas(Feuil5), mes colonnes de la A à G sont dupliquées et H répartie sur les lignes. Mais, après la colonne H; les 21 colonnes sont reprises.

http://www.cjoint.com/c/EIspX0XNUkj


Sub test()
Dim C As Range, Tabl, Plage As Range, Ligne As Long
With Sheets("JIRA Data")
Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
End With
With Sheets("Feuil5")
For Each C In Plage
Tabl = Split(C.Offset(, 7), ";")
.[A:C].NumberFormat = "@"
For i = 0 To UBound(Tabl)
Ligne = Ligne + 1
.Range(.Cells(Ligne, 1), .Cells(Ligne, 7)).Value = C.Resize(, 7).Value
.Cells(Ligne, 8) = Tabl(i)
.Range(.Cells(Ligne, 9), .Cells(Ligne, 22)).Value = C.Resize(, 22).Value
Next i
Next
.[H:H].EntireColumn.AutoFit
End With
End Sub
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
509 > Fitia
Bonjour,

Correction pour la copie des colonnes I à V
Sub test()
Dim C As Range, Tabl, Plage As Range, Ligne As Long
With Sheets("JIRA Data")
Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
End With
With Sheets("Feuil5")
For Each C In Plage
Tabl = Split(C.Offset(, 7), ";")
.[A:C].NumberFormat = "@"
For i = 0 To UBound(Tabl)
Ligne = Ligne + 1
.Range(.Cells(Ligne, 1), .Cells(Ligne, 7)).Value = C.Resize(, 7).Value
.Cells(Ligne, 8) = Tabl(i)
.Range(.Cells(Ligne, 9), .Cells(Ligne, 22)).Value = C.Offset(0, 8).Resize(, 14).Value
Next i
Next C
.[H:H].EntireColumn.AutoFit
End With
End Sub

A+
>
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

Hey Gyrus!

C'est impeccable!!!! merci merci merci. En plus, je commence à comprendre tous ces codes(ouffff)

merci pour ton temps et pour ton aide. Tu me rends un grand service et m'a fais gagné beaucoup de temps.

Je suis reconnaissante.

Encore Merci
Hey!!!

j'ai un souci, la macro fonctionne bien. Toutefois, quand la colonne H est vide, celle-ci n'est pas reprise dans Feuil1 :-( du coup j'ai uniquement les lignes dont la colonne L contenait quelque chose.

Pourrais-tu m'aider à remédier à ça stp???
Hey Gyrus

La macro fonctionne à merveille sauf que les lignes dont la colonnes à éclater sont vide ne sont pas reprises dans la feuille de destination :((
Hey!!!

j'ai un souci, la macro fonctionne bien toutefois, quand la colonne H est vide, celle-ci n'est pas reprise dans Feuil1 :-( du coup j'ai uniquement les lignes dont la colonne L contenait quelque chose.

Pourriez-vous m'aider à remédier à ça svp???