1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Option Explicit
'------------------------------------------------ 20/02/2021 --------------
' reprise du format date alpha francaise en valeur de date : le jour doit être en nombre
Public Function rep_dat(den As String, Optional a_d As Integer = 0) ' année en option
Dim jou As Integer ' jour
Dim moi As Integer ' mois
Dim ann As Integer ' année
Dim id1 As Integer ' indice 1
Dim id2 As Integer ' indice 2
Dim tbe ' table éléments
Dim t_m ' table mois
t_m = Array("", "janv", "févr", "mars", "avr", "mai", "juin", "juil", "août", "sept", "oct", "nov", "déc")
tbe = Split(Replace(Replace(Replace(den, "-", " "), "/", " "), "_", " "), " ")
For id1 = 0 To UBound(tbe) ' éléments de la date alpha
If IsNumeric(tbe(id1)) Then ' élément numérique
If jou = 0 And (tbe(id1) > 0 And tbe(id1) < 32) Then
jou = tbe(id1) ' jour plausible non renseigné
ElseIf ann = 0 Then
ann = tbe(id1) ' année trouvée
End If
Else
For id2 = 1 To 12 ' recherche du mois alpha
If InStr(LCase(tbe(id1)), LCase(t_m(id2))) > 0 Then moi = id2
Next id2
End If
Next id1 ' détermination année
ann = IIf(a_d = 0, IIf(ann = 0, Year(Date), ann), a_d)
rep_dat = DateSerial(ann, moi, jou) ' détermination date
End Function |