Public Sub TestAplatir()
Dim Str1 As String, Str2 As String
'Exemple sans array
Let Str1 = VBA.Join(Aplatir( _
1, _
2, _
3, _
4, _
5, _
6, _
7, _
8, _
9, _
10), ", ") 'Renvoie "1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
'Exemple avec des valeurs et des arrays imbriqués
Let Str2 = VBA.Join(Aplatir( _
1, _
Array( _
2, _
3), _
Array( _
4, _
Array( _
5, _
6, _
7), _
8, _
9), _
10), ", ") 'Renvoie "1, 2, 3, 4, 5, 6, 7, 8, 9, 10" également
VBA.MsgBox Str1 & VBA.vbNewLine & Str2
End Sub
Public Function Aplatir(ParamArray Elements() As Variant) As Variant()
Dim vntElement As Variant
Let Aplatir = VBA.Array
For Each vntElement In Elements
Call sAplatir(Aplatir, vntElement)
Next vntElement
End Function
Private Sub sAplatir(ByRef Result() As Variant, ByRef Element As Variant)
Dim vntElement As Variant
If VBA.IsArray(Element) Then
For Each vntElement In Element
Call sAplatir(Result, vntElement)
Next vntElement
Else
ReDim Preserve Result(LBound(Result) To UBound(Result) + 1)
Let Result(UBound(Result)) = Element
End If
End Sub