Public Function RangeToArray(ParamArray zones()) As Variant()
Dim iZone As Long, nbCells As Long, iRes As Long, iCell As Long, jCell As Long
Dim res() As Variant, tmpTab() As Variant
For iZone = LBound(zones) To UBound(zones)
If TypeName(zones(iZone)) <> "Range" Then Exit Function
nbCells = nbCells + zones(iZone).Cells.Count
Next iZone
ReDim res(1 To nbCells): iRes = 0
For iZone = LBound(zones) To UBound(zones)
tmpTab = zones(iZone).Cells.Value
For iCell = LBound(tmpTab, 1) To UBound(tmpTab, 1)
For jCell = LBound(tmpTab, 2) To UBound(tmpTab, 2)
iRes = iRes + 1
res(iRes) = tmpTab(iCell, jCell)
Next jCell
Next iCell
Next iZone
RangeToArray = res
End Function