Convertisseur 1.1.2001 -> 01.01.2001

Contenu du snippet

Bon, c un peu nul comme code, mais ca m'a servi dans mon appli. J'ai une texbox de type date, qui pas défaut recoit la date du jour.
Pb : lorsque la date est genre 05.08.2004 -> ca marque 5.8.2004
Si l'on modifie la textbox, ex, on remplace '5' par '5', ca devient automatiquement : 05.08.2004

par contre, si on y touche pas, ca reste 5.8.2004.

Donc, pour mes recherches dans ma base de données, ca m'embetait.

Source / Exemple :


'évènement qui va appeler la conversion:
'********************************
Private Sub Bouton_OK_Click()
Text_Date = Conversion_Date(Text_Date)
End Sub

'***************************************************************************************
'                           Convertit 1.1.2001 -> 01.01.2001
'***************************************************************************************

Function Conversion_Date(La_Date As String) As String
Dim Jour, Mois As String
If Len(La_Date) <> 10 Then
    'l'expression de la date n'a pas le bon format
    'teste le jour:
    Jour = Left(La_Date, InStr(1, La_Date, "."))
    If Len(Jour) <> 3 Then
        'le jour n'est pas correct:
        Jour = "0" & Jour
        Jour = Left(Jour, 2)
        Mois = Right(La_Date, 7)
        If Left(Mois, 1) = "." Then
            'le mois n'est pas correct:
            Mois = Right(Mois, 6)
            Mois = "0" & Mois
        End If
        La_Date = Jour & "." & Mois
    End If
End If
Conversion_Date = La_Date
End Function

2ème fonction de conversion :
Dans un module, par exemple : Public infoDC As String Const LOCALE_USER_DEFAULT = &H400 Const LOCALE_SSHORTDATE = &H1F Const LOCALE_SLONGDATE = &H20 Const LOCALE_STIMEFORMAT = &H1003 Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long '*************************************************************************************** ' Renvoit la date du jour ' avec le séparateur correct "/" ou "." '*************************************************************************************** Public Function La_Date() As String Dim Buffer As String, Ret As Long, infoDL As String, infoT As String Buffer = String$(256, 0) Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, Buffer, Len(Buffer)) infoDC = Left$(Buffer, Ret - 1) Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, Buffer, Len(Buffer)) infoDL = Left$(Buffer, Ret - 1) Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, Buffer, Len(Buffer)) infoT = Left$(Buffer, Ret - 1) 'MsgBox "Date courte : " & infoDC & vbLf & vbLf & "Date longue : " & infoDL & vbLf & vbLf & "Heure : " & infoT La_Date = Format$(Date, infoDC) End Function '*************************************************************************************** ' Convertion de date selon le séparateur régional : '*************************************************************************************** Function Conversion_Date(Date_a_convertir As String) As String Dim Jour, Mois, Annee As String Dim separateur_regional As String If infoDC = "" Then Call La_Date separateur_regional = Left(infoDC, 3) separateur_regional = Right(separateur_regional, 1) 'separateur_regional vaut alors "." ou "/" selon le système d'exploitation Jour = Left(Date_a_convertir, 2) Mois = Left(Date_a_convertir, 5) Mois = Right(Mois, 2) Annee = Right(Date_a_convertir, 4) Date_a_convertir = Jour & separateur_regional & Mois & separateur_regional & Annee Conversion_Date = Date_a_convertir End Function

Conclusion :


C plus facile d'imposer un format quand on enregistre la date...

... que de rechercher tous les formats de date possible quand on fait une recherches SQL...

A voir également

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.