bonjours a tous

alors aujourd'hui j'ai un tout petit soucis
je récupère des dates dans un texte il y en a 3

date1:sous se format :27 juillet 2015
date2:sous se format :28/07/2015
date3:sous se format :29-07-2015

ma petite fonction utilisant le regex

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function chainevalide(txt As String, matrice) As Variant
    Dim Matches
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = matrice
        .IgnoreCase = True
        Set Matches = .Execute(txt)
        ReDim tablo(Matches.Count): i = 0
        For Each Match In Matches
            tablo(i) = Match.Value
            i = i + 1
        Next
    End With
    chainevalide = tablo
End Function
et voila la sub qui injecte le pattern dans la fonction

la fonction est sensée me retourner 3 dates elle le fait mais avec une erreur dans la 2 eme
voila ce la fonction me reourne
27 Juillet 2015
17 28/07/2015 ici!! ce qui est en rouge est une erreur!!!!!!!!!!!
29-07-2015

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Sub test2()
 Dim texte As String
    texte = "blablabla blabla bla bla Lundi 27 Juillet 2015: 147 - 536 - 945 - 611 - 317 28/07/2015 blabla bla bla blablablabla blabla bla Mercredi le 29-07-2015, blablabla blabla"
newdate = chainevalide(texte, "  [(\d{2})] + [//-/-/( )] + [a-z/0-9] +[( )-//]+(\d{4}) ")
 
 MsgBox newdate(0) & vbCrLf & newdate(1) & vbCrLf & newdate(2)
End Sub
definition des operateurs
2numero + un espaces ou un tiret ou un slash +un ou plusieur numero ou lettre + pareil que le vert + les 4 derniers chiffres pour l'année


alors effectivement les 2 premiers operateurs pourais me retourner cela mais le 5 eme devrait eliminer cette possibilité non?
puisque en dernier 4 nulmero sont attendus??

merci pour le coup de main