Répartir contenu d'une cellule sur des lignes distinctes

Résolu
Fitia -  
 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

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

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

A+
0
Fitia
 
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?
0
Fitia
 
<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
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
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+
0
Fitia
 
Gyrus, merci de ta réponse. J'ai essayé ton code mais il y a eu erreur sur la ligne

.Cells(1, Col) = Left(Texte, Len(Texte) - 1)

Toutefois, j'ai trouvé ce code traîner sur le forum, il marche mais je n'ai pas pu l'adapter à mon fichier de travail :-( je suis vraiment débutante en VBA.

Pourrais-tu m'aider là dessus?
0
Fitia
 
Sub test()
Dim C As Range, Tabl, Plage As Range, Ligne As Long
With Sheets("Feuil1")
Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
End With
With Sheets("Feuil2")
For Each C In Plage
Tabl = Split(C.Offset(, 10), ";")
.[A:C].NumberFormat = "@"
For i = 0 To UBound(Tabl)
Ligne = Ligne + 1
.Range(.Cells(Ligne, 1), .Cells(Ligne, 10)).Value = C.Resize(, 10).Value
.Cells(Ligne, 11) = Tabl(i)
Next i
Next
.[K:K].EntireColumn.AutoFit
End With
End Sub
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > Fitia
 
Avant de glaner d'autres codes, ce serait bien que tu cherches à comprendre ceux qui te sont envoyés.
Tu peux te douter qu'avant d'envoyer une proposition j'ai pris la peine de la tester.
Voici le fichier de test
https://www.cjoint.com/c/EIsoEN816Ly

Par contre, il se peut que tu n'obtiennes pas le résultat attendu.
Par exemple, je ne vois aucun séparateur ";" dans la première ligne. Le traitement parait donc inutile.

A+
0
Fitia
 
Merci Gyrus pour tes retours, j'ai essayé tes codes. De la journée, je n'ai fais que des tests, mais je n'ai jamais eu de cours de VBA, j'ai toujours utilisé des codes que j'ai trouvé en essayant de les adapter à mes fichiers. Jusqu'à aujourd'hui ça marchait bien.

En effet, j'ai pas obtenu le résultat que j'attendais, au fait les cellules à éclater sont les cellules de la colonne H du fichier, toutes les lignes ne contiennent pas ";" mais c'est quand le point virgule apparaît que le collapse est nécessaire.
0
Fitia
 
est-ce normal que je ne vois aucun changement après l'exécution de la macro que tu as créé?
0
Fitia
 
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???
0