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

Fermé
chexichex - Modifié le 29 juin 2020 à 17:29
DjiDji59430 Messages postés 4028 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 18 avril 2024 - 30 juin 2020 à 15:56
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
A voir également:

3 réponses

Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
29 juin 2020 à 17:40
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
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 30 juin 2020 à 12:36
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
Merci bcp! Je vais adapter cette macro. C'est super gentil!
Bonne journée
Chexichex
0
DjiDji59430 Messages postés 4028 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 18 avril 2024 644
30 juin 2020 à 15:56
Bonjour à tous,

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

a la souris (je débute)

Crdlmt
0