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

  1. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

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

    A+
    0
    1. 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
  2. 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
  3. Gyrus Messages postés 3360 Statut Membre 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
    1. 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
    2. 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
    3. Gyrus Messages postés 3360 Statut Membre 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
    4. 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
    5. Fitia
       
      est-ce normal que je ne vois aucun changement après l'exécution de la macro que tu as créé?
      0
  4. 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