Function M_Charge(plage As Range, Optional feuilles As String = "") As Variant
Dim cel As Range, i As Long, j As Integer, tablo() As Variant, tablof() As Variant
Dim f As Integer, feuille1 As String, feuille2 As String
Application.Volatile ' Permet un recalcul automatique
' Définition de la feuille par défaut si aucune feuille n'est mentionnée
If feuilles = "" Then feuilles = ActiveSheet.Name & ":" & ActiveSheet.Name
i = -1
If InStr(feuilles, ",") > 0 Then ' traitement des feuilles non contigues (séparées par des virgules)
While InStr(feuilles, ",") > 0
i = i + 1
ReDim Preserve tablof(i)
tablof(i) = Left(feuilles, InStr(feuilles, ",") - 1)
feuilles = Mid(feuilles, InStr(feuilles, ",") + 1, Len(feuilles) - InStr(feuilles, ","))
Wend
End If
i = i + 1
ReDim Preserve tablof(i)
tablof(i) = feuilles
i = -1
For f = LBound(tablof) To UBound(tablof) ' traite les différent blocs de feuilles
feuilles = tablof(f)
If InStr(feuilles, ":") = 0 Then feuilles = feuilles & ":" & feuilles ' je crée le bloc la feuille est seule
' Récupération de la feuille de début et la feuille de fin
feuille1 = Left(feuilles, InStr(feuilles, ":") - 1)
feuille2 = Right(feuilles, Len(feuilles) - InStr(feuilles, ":"))
' Passage en revue de toutes les feuilles entre Feuille1 et Feuille2
For j = Sheets(feuille1).Index To Sheets(feuille2).Index
For Each cel In plage ' Pour chacune des cellules de la plage
i = i + 1
ReDim Preserve tablo(i) ' J'incrémente la table en cours de création
tablo(i) = Sheets(j).Cells(cel.Row, cel.Column).Value ' Récupélation de la valeur
Next
Next j
Next f
M_Charge = tablo ' Affectation du tableau à la fonction (la matrice est créée)
End Function