Microsoft 365 Dupliquer lignes en fonction du nombre de données entre "/" dans une cellule

de_hanstrapp

XLDnaute Occasionnel
Bonsoir le forum,

J'ai dans la colonne F de mon tableau plusieurs données qui sont séparées par un "/".
Je voudrais dupliquer le contenu des colonnes A, B, C, D et E autant de fois qu'il y a de données entre le "/" comme dans l'exemple joint.

Quelqu'un aurait t il une idée pour m'éviter de de nombreux copier/coller avec un risque évident de suppression de données...

Merci par avance pour votre aide.

NSAPG
 

Pièces jointes

  • Exemple.xlsx
    10.2 KB · Affichages: 24

Staple1600

XLDnaute Barbatruc
Bonsoir

Une idée à peaufiner
VB:
Sub test()
Dim dl&, t, rng As Range
For dl = Cells(Rows.Count, "F").End(xlUp).Row To 2 Step -1
t = Split(Cells(dl, "F"), "/")
Set rng = Cells(dl, "A").Resize(, 5)
x = UBound(t) - 1
Rows(dl).Resize(x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(dl, "F").Resize(x + 1) = Application.Transpose(t)
Cells(dl, "A").Resize(x + 1, 5).Value = rng.Value
Next
End Sub
 

de_hanstrapp

XLDnaute Occasionnel
Bonsoir Staple,
Merci pour ce code.
Il fonctionne quasi parfaitement si ce n'est qu'il me supprime à chaque fois la dernière donnée.
Dans mon fichier exemple je devrais avoir 6 lignes pour la premier série de données et pour la seconde alors qu'en exécutant la macro mon résultat et de 5 et 4 lignes.
Par ailleurs y a t il une possibilité de supprimer les espaces ?
NSAPG
 

Staple1600

XLDnaute Barbatruc
Re

C'est pour cela que je parlais de peaufiner ;)
VB:
Sub test_II()
Dim dl&, t, rng As Range
For dl = Cells(Rows.Count, "F").End(xlUp).Row To 2 Step -1
t = Split(Cells(dl, "F"), "/")
Set rng = Cells(dl, "A").Resize(, 5)
x = UBound(t)
Rows(dl).Resize(x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(dl, "F").Resize(x + 1) = Application.Transpose(t)
Cells(dl, "A").Resize(x + 1, 5).Value = rng.Value
Next
End Sub
Je repasse plus tard pour la suite
 

Staple1600

XLDnaute Barbatruc
Re

Est-ce le résultat escompté avec cette version?
VB:
Sub test_III()
Dim dl&, t, rng As Range
Application.ScreenUpdating = False
For dl = Cells(Rows.Count, "F").End(xlUp).Row To 2 Step -1
t = Split(Cells(dl, "F"), "/")
Set rng = Cells(dl, "A").Resize(, 5)
x = UBound(t)
Rows(dl).Resize(x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(dl, "F").Resize(x + 1) = Application.Transpose(t)
Cells(dl, "F").Resize(x + 1) = Application.Trim(Cells(dl, "F").Resize(x + 1))
Cells(dl, "F").Columns.AutoFit
Cells(dl, "A").Resize(x + 1, 5).Value = rng.Value
Next
nettoyage
End Sub
Sub nettoyage()
Columns("F:F").Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Columns("F:F").Replace What:=Chr(13), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Columns("F:F").Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Cells.RowHeight = 15
End Sub
 

de_hanstrapp

XLDnaute Occasionnel
Re

Est-ce le résultat escompté avec cette version?
VB:
Sub test_III()
Dim dl&, t, rng As Range
Application.ScreenUpdating = False
For dl = Cells(Rows.Count, "F").End(xlUp).Row To 2 Step -1
t = Split(Cells(dl, "F"), "/")
Set rng = Cells(dl, "A").Resize(, 5)
x = UBound(t)
Rows(dl).Resize(x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(dl, "F").Resize(x + 1) = Application.Transpose(t)
Cells(dl, "F").Resize(x + 1) = Application.Trim(Cells(dl, "F").Resize(x + 1))
Cells(dl, "F").Columns.AutoFit
Cells(dl, "A").Resize(x + 1, 5).Value = rng.Value
Next
nettoyage
End Sub
Sub nettoyage()
Columns("F:F").Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Columns("F:F").Replace What:=Chr(13), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Columns("F:F").Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Cells.RowHeight = 15
End Sub
J'ai ce message d'erreur quand je suis sur mon fichier (et non sur l'exemple).
Rows(dl).Resize(x).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 

Discussions similaires

Réponses
11
Affichages
182

Statistiques des forums

Discussions
312 111
Messages
2 085 391
Membres
102 882
dernier inscrit
Sultan94