Vous connaissez la fonction format en l'utilisant avec une date:
unString= format (unedate,"jj MM yy, hh:mm:ss" )
Ben la c'est le contraire:
uneDate= Cdate(toDate(chaine as string, monformat as string)
Cà a l'air de bien marcher, tous les formats ne sont pas acceptés, je butte un peu avec les mois écrits en lettre mais je devrais y arriver. J'attends avant tout de votre part des tests bien tordus pour évaluer cette fonction.
Actuellement, la fonction se limite à comparer la position des caractères. Cà devrait satisfaire déjà beaucoup de monde.
Source / Exemple :
Public Function toDate(chaine As String, format As String) As String
Dim i As Integer
Dim j As Integer
Dim car As String
Dim car2 As String
Dim annee As String
Dim mois As String
Dim moisI As Integer
Dim jour As String
Dim heure As String
Dim min As String
Dim sec As String
Dim datestring As String
Dim Lettre As Integer
Lettre = 0
i = 1
j = 1
While (i < Len(format) And j < Len(chaine))
car = Mid(format, i, 1)
Select Case car
Case "y"
annee = annee & Mid(chaine, j, 1)
Case "M"
car2 = Mid(chaine, j, 1)
If car2 <= "z" And car2 >= "A" And Lettre = 0 Then 'on est avec des mois sous forme de lettres
car2 = car
While (i < Len(format) And car2 = "M") 'je passe les mois dans le format
car2 = Mid(format, i, 1)
i = i + 1
Wend
i = i - 2 'c'est pour la boucle du while principal... j'ajuste
car2 = Mid(chaine, j, 1)
' puis je cherche tous les caractères qui sont des lettres
While (j < Len(chaine) And car2 <= "z" And car2 > "9")
mois = mois & car2
j = j + 1
car2 = Mid(chaine, j, 1)
Wend
j = j - 1 'j'ajuste aussi
Else
mois = mois & Mid(chaine, j, 1) 'sinon c'est cool
End If
Case "d"
jour = jour & Mid(chaine, j, 1)
Case "h"
heure = heure & Mid(chaine, j, 1)
Case "m"
min = min & Mid(chaine, j, 1)
Case "s"
sec = sec & Mid(chaine, j, 1)
End Select
j = j + 1
i = i + 1
Wend
If Len(annee) < 2 Then
annee = "20" & annee
End If
If Len(annee) < 4 Then
annee = "2000"
End If
If Len(mois) < 2 Then
mois = "00"
End If
If Len(jour) < 2 Then
jour = "00"
End If
If Len(heure) < 2 Then
heure = "00"
End If
If Len(min) < 2 Then
min = "00"
End If
If Len(sec) < 2 Then
sec = "00"
End If
On Error GoTo passer
moisI = CInt(mois)
Select Case moisI
Case 1
mois = "Janv"
Case 2
mois = "Févr"
Case 3
mois = "Mars"
Case 4
mois = "Avr"
Case 5
mois = "Mai"
Case 6
mois = "Juin"
Case 7
mois = "Juil"
Case 8
mois = "Août"
Case 9
mois = "Sept"
Case 10
mois = "Oct"
Case 11
mois = "Nov"
Case 12
mois = "Déc"
End Select
passer:
datestring = jour & " " & mois & " " & annee & " " & heure & ":" & min & ":" & sec
MsgBox datestring
toDate = datestring
End Function
Conclusion :
Le Zip présente une application toute con de la fonction
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.