Récupérer un tableau des exemplaires

L'objectif est de récupérer les données d'exemplaires présentes sur une notice.
La fonction renvoie un tableau. Chaque élément peut ensuite être traité par d'autres parties du programme.

Function RecupereExemplaires
	Dim MonTableau, Notice
	MonTableau = Array()
	Dim regEx, oMatches, oMatch
	Set regEx = New RegExp
	With regEx
		.Pattern = "(e\d\d[\s\S]*?)A\d\d"
		.IgnoreCase = False
		.MultiLine = True
		.Global = True
	End With
	If Application.ActiveWindow.Title Is Nothing Then
		Application.ActiveWindow.Command "mod", False
	End If
	Application.activeWindow.title.selectAll
	Notice = Application.activeWindow.title.selection
	Set oMatches = regEx.Execute(Notice)
	If oMatches.Count > 0 Then
		For Each oMatch in oMatches
			ReDim Preserve MonTableau(UBound(MonTableau)+1)
			MonTableau(UBound(MonTableau)) = oMatch.SubMatches(0)
		Next
	End If
	RecupereExemplaires = MonTableau
End Function

On appelle cette fonction comme ceci, pour tester :

Sub TestRecupereExemplaires
	Dim e
	e = RecupereExemplaires
	If UBound(e) <> -1 Then
		For Each Element In e
			MsgBox(Element)
		Next
	Else
		MsgBox("Aucun exemplaire")
	End If
End Sub

L'expression répulière (e\d\d[\s\S]*?)A\d\d récupère tout ce qui commence par un e minuscule suivi de deux chiffres (e\d\d) et qui finit par un A majuscule suivi de deux chiffres (A\d\d). Tous les caractères intermédiaires sont récupérés jusqu'au premier A : [\s\S]*? (? = non avide). La chaîne peut s'étendre sur plusieurs lignes : .MultiLine = True.
Comme le A majuscule suivi de deux chiffres ne nous intéresse pas, on met entre parenthèses la partie utile : (e\d\d[\s\S]*?) ; cette partie est récupérée seule dans la collection SubMatches.
La fonction renvoie de toute façon un tableau (MonTableau = Array()) : si le tableau est vide, la fonction UBound(MonTableau) renvoie -1.