Merci pour cette correction.
J'ai édité le code pour inclure une colonne en plus (Liste 4), ça a l'air de fonctionner, est-ce correct ?
Question subsidiaire: si j'ai bien compris le 1 To 100 dans la fonction b() sert à indiquer le nombre maximal de lignes, c'est bien cela ?
Option Explicit
Sub test()
Dim a, b(), i As Long, j As Long, n As Long, k, x, y, z, zz
With Sheets("Liste numéros").Range("a3").CurrentRegion
a = .Value
'attention à la 1ère dimension
ReDim b(1 To 100, 1 To 6): n = 1
b(n, 1) = a(1, 1)
b(n, 2) = a(1, 2)
b(n, 3) = a(1, 3)
b(n, 4) = a(1, 4)
b(n, 5) = a(1, 5)
b(n, 6) = a(1, 6)
For i = 2 To UBound(a, 1)
x = Split(a(i, 3), ",")
y = Split(a(i, 4), ",")
z = Split(a(i, 5), ",")
zz = Split(a(i, 6), ",")
k = Application.Max(UBound(x), UBound(y), UBound(z), UBound(zz))
If k = -1 Then k = 0
ReDim Preserve x(0 To k)
ReDim Preserve y(0 To k)
ReDim Preserve z(0 To k)
ReDim Preserve zz(0 To k)
For j = 0 To k
n = n + 1
b(n, 1) = a(i, 1)
b(n, 2) = a(i, 2)
b(n, 3) = x(j)
b(n, 4) = y(j)
b(n, 5) = z(j)
b(n, 6) = zz(j)
Next
Next
.Offset(, .Columns.Count + 1).Resize(n).Value = b
End With
End Sub
Terry.