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...
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.