Séparer le contenu d'une cellule en plusieurs lignes

chexichex -  
DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

La cellule d'une de mes colonnes contient une liste de données séparées par des virgules.
Je souhaiterais obtenir une ligne pour chaque donnée automatiquement.

Exemple:
L1 : item A1 / item B1 / item C1/ item1,item2,item3,item4 / item E1
L2 : item A2 / item B2 / item C2/ item1,item2,item3,item4 / item E2

Et je voudrais obtenir :
L1 : item A1 / item B1 / item C1/ item1 / item E1
L1 : item A1 / item B1 / item C1/ item2 / item E1
L1 : item A1 / item B1 / item C1/ item3 / item E1
L1 : item A1 / item B1 / item C1/ item4 / item E1
L2 : item A2 / item B2 / item C2/ item1 / item E2
L2 : item A2 / item B2 / item C2/ item2 / item E2
L2 : item A2 / item B2 / item C2/ item3 / item E2
L2 : item A2 / item B2 / item C2/ item4 / item E2

Merci pour votre aide!

Cdt,

Chexichex

3 réponses

  1. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
     
    Bonjour,
    quand tu parles de L1, c'est la cellule L1 ?

    si c'est le cas, il ne peut y avoir qu'1 des correspondances/4 énoncées !
    0
    1. chexichex
       
      Bonjour!

      Non je parle de la ligne 1 :)

      Ce que je souhaite obtenir est donc :

      L1 : item A1 / item B1 / item C1/ item1 / item E1
      L2 : item A1 / item B1 / item C1/ item2 / item E1
      L3 : item A1 / item B1 / item C1/ item3 / item E1
      L4 : item A1 / item B1 / item C1/ item4 / item E1
      L5 : item A2 / item B2 / item C2/ item1 / item E2
      L6 : item A2 / item B2 / item C2/ item2 / item E2
      L7 : item A2 / item B2 / item C2/ item3 / item E2
      L8 : item A2 / item B2 / item C2/ item4 / item E2
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    En vba avec la méthode Split

    A mettre dans un module et a associer à un bouton ou un raccourci clavier:

    Option Explicit
    Sub For_X_to_Next_Ligne()
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant
    Dim DerniereLigneUtilisee As Long
        Set FL1 = Worksheets("Feuil1") ' a adapter
        NoCol = 1 'lecture de la colonne A a adapter
        Application.ScreenUpdating = False
        For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        On Error Resume Next
        DerniereLigneUtilisee = Cells(Rows.Count, 2).End(xlUp).Row + 1
            Var = FL1.Cells(NoLig, NoCol)
         Range("B" & DerniereLigneUtilisee) = Split(Var, ",")(0)
    Range("B" & DerniereLigneUtilisee) = Range("B" & DerniereLigneUtilisee) & "/" & Split(Var, "/")(4)
    Range("C" & NoLig) = Split(Var, "/")(3)
    Range("B" & DerniereLigneUtilisee + 1) = Split(Var, ",")(0)
    Range("B" & DerniereLigneUtilisee + 1) = Mid(Trim(Range("B" & DerniereLigneUtilisee + 1)), 1, InStrRev("/" & Trim(Range("B" & DerniereLigneUtilisee + 1)), " ") - 1) & Split(Range("C" & NoLig), ",")(1) & "/" & Split(Var, "/")(4)
    Range("B" & DerniereLigneUtilisee + 2) = Split(Var, ",")(0)
    Range("B" & DerniereLigneUtilisee + 2) = Mid(Trim(Range("B" & DerniereLigneUtilisee + 2)), 1, InStrRev("/" & Trim(Range("B" & DerniereLigneUtilisee + 2)), " ") - 1) & Split(Range("C" & NoLig), ",")(2) & "/" & Split(Var, "/")(4)
    Range("B" & DerniereLigneUtilisee + 3) = Split(Var, ",")(0)
    Range("B" & DerniereLigneUtilisee + 3) = Mid(Trim(Range("B" & DerniereLigneUtilisee + 3)), 1, InStrRev("/" & Trim(Range("B" & DerniereLigneUtilisee + 3)), " ") - 1) & Split(Range("C" & NoLig), ",")(3) & "/" & Split(Var, "/")(4)
    Next
        Set FL1 = Nothing
        Application.ScreenUpdating = True
    End Sub
    
    
    


    Les valeurs sont dans la colonne B à adapter

    0
    1. chexichex
       
      Merci bcp! Je vais adapter cette macro. C'est super gentil!
      Bonne journée
      Chexichex
      0