XL 2016 Principe du text to columns en text to row

Vinvol

XLDnaute Junior
Bonjour,

Je cherche un moyen de faire un "text to row" et je sèche complètement...

Le principe, c'est que j'ai des entrées uniques dans un tableau, mais l'une des propriétés de chaque entrée est multiévaluée.
Un text to column me permet d'individualiser les valeurs de cette propriété, mais chaque ligne a alors un nombre de colonnes différent.

Ce que j'aimerais faire, c'est dupliquer mes lignes autant de fois qu'il y a de valeurs dans cette propriété.
Et je ne sais pas comment.

Ci-joint un exemple qui illustre mieux que cette description boiteuse ce que je cherche à atteindre.

Merci,
Vinvol
 

Pièces jointes

  • split.xlsx
    12.7 KB · Affichages: 22

david84

XLDnaute Barbatruc
Bonsoir,
un essai pour tester :

Code:
Sub test()
Dim Pl As Range, s, T(), i&, j&, L&
Set Pl = Range("A3").CurrentRegion
ReDim T(1 To Pl.Rows.Count)

Range("E3").CurrentRegion.ClearContents

'calcul du nombre de lignes du tableau final
For i = LBound(T) To UBound(T)
     T(i) = Len(Pl(i, Pl.Columns.Count)) - Len(Replace(Pl(i, Pl.Columns.Count), "|", vbNullString))
     L = L + T(i)
Next i

ReDim T(1 To Pl.Rows.Count + L, 1 To Pl.Columns.Count)
L = 1

For i = 1 To UBound(T)
     s = Split(Pl(i, Pl.Columns.Count), "|")
     For j = LBound(s) To UBound(s)
        T(L, 1) = Pl(i, 1)
        T(L, 2) = Pl(i, 2)
        T(L, 3) = s(j)
        L = L + 1
    Next j
    If L > UBound(T) Then Exit For
Next i

Range("E3").Resize(UBound(T), UBound(T, 2)) = T
End Sub

A+
 

Discussions similaires

Réponses
7
Affichages
485

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40