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

Signaler
-
Messages postés
2681
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2020
-
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

Messages postés
604
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
3 juillet 2020
53
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 !
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
Messages postés
6823
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
1 juillet 2020
528
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

Merci bcp! Je vais adapter cette macro. C'est super gentil!
Bonne journée
Chexichex
Messages postés
2681
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
2 juillet 2020
354
Bonjour à tous,

Avec power query
https://www.cjoint.com/c/JFEn31mR0Kf

a la souris (je débute)

Crdlmt