begin process at 2012 02 14 07:24:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > CONVERTISSEUR 1.1.2001 -> 01.01.2001

CONVERTISSEUR 1.1.2001 -> 01.01.2001


 Information sur la source

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :05/08/2004 Date de mise à jour :25/08/2004 20:06:53 Vu :3 116

Auteur : el_teedee

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

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

  • 'é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
'é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...


 Historique

25 août 2004 20:06:54 :
25/08/2004 : Explication de cette 2 eme fonction : J'ai eu un problème lors du passage d'un système d'exploitation allemand à un francais. Une date contenu dans ma base de données était au format dd.mm.yyyy et ma requete plantait a cause de ca. J'ai bien essayé la fonction format, mais ca ne marchait pas. La date restait inchangée meme apres la commande Format ! La fonction La_Date renvoit la date du jour au bon format, et elle contient la variable infoDC. Cette variable est de la forme dd.mm.yyyy si c'est un système allemand par exemple, et dd/mm/yyyy si c'est un système francais. 1°)Un premier appel a la fonction la_date va remplir cette variable infoDC. 2°)Ensuite un appel a la fonction conversion_date va extraire le séparateur régional, puis remettre la date au bon format. Je sais que c'est exactement ce que fait la fonction "format" mais dans mon cas, ca n'a pas marché, donc....

 Sources du même auteur

Source avec Zip Source avec une capture CALCUL DE DISTANCES AVEC LA COURBURE DE LA TERRE

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

Commentaires et avis

Commentaire de frop01 le 05/08/2004 17:16:04

bon g pas tester ce code mais je crois que c'est plus juste comme ca :

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
Conversion_Date = La_Date

else

Conversion_Date = ""

End If

End Function


et dans l'événement à appeler :

Private Sub Bouton_OK_Click()
if Conversion_Date(Text_Date)="" then
  Text_Date = Conversion_Date(Text_Date)
else
  msgbox"Veuillez resaisir la date"
endif
End Sub

Commentaire de el_teedee le 05/08/2004 19:43:42

Heu, je suis pas trop d'accord avec toi... enfin ché pas
[code]
else
Conversion_Date = ""
End If[/code]

si la date est correcte, alors tu la remplace par "", c'est a dire tu l'effaces? Je suis pas d'accord... If c'est pas correct -> traitement, sinon... ben pas de else en fait, ma fonction retourne la meme date si elle était déjà correcte...
[code]end if
Conversion_Date = La_Date
end sub[/code]

ahhhhhhhhhhhhh

ok je viens de piger ^^

si elle est correcte, le fonction retourne "", et si c "", alors ........

hmmmmmmm, non , en fait je vois pas.....

c tellement plus simple c ke j'ai fait (et ca marche)... dis moi ou ca couille... lol


ps : si c le fait que je test pas si y'a une date, en effet je le fait dans mon programme, mais ca se fait ailleurs, et j'allais pas mettre tout mon programme (trop long) ici...

^^

Commentaire de frop01 le 05/08/2004 20:55:09

Ahh oui j'avais pas vu le (<> 10 )
mais c'est tellement évident que la fonction Convert_Date doit impérativement tester la validité de la date (si c'est correct)

si len(Date) = 10 alors teste la validité de la date sinon
changer le format  et tester une autre fois

enfin je n'ai pas vb pour tester  mais c'est quoi le résultat de ca :

Text_Date = Conversion_Date("30.30.2004")
Text_Date = Conversion_Date("a1.z.2004")  

Est ce que c'est valable ??

ne prends pas mal mes messages mais c'est juste pour disucuter et améliorer le code ;)

Merci de ta compréhension ;)

Commentaire de el_teedee le 06/08/2004 01:43:47

Oh, que non, j'apprécie qu'on réponde a mes sources ... :)

alors, convertir 30.30.2004, c pas possible, car la textbox étant au format date, des que tu laches le focus, la date est convertie toutes seule si elle est valide, sinon il te marque une erreur : 'vous avez rentrez une valeur incorrecte pour cette textbox a cause de son type : date' (ou un truc  dans le genre)

2emement: ma fonction ne sert QUE quand (c le cas dans mon appli) la textbox recoit par défaut la date, qui sera comme aujourd'hui -> 6.8.2004.

Si tu ne touches pas à la date, elle reste ainsi, donc c pas bon :/
Si tu prends le focus et que tu perds le focus -> reste ainsi, pas bon :/
Si tu remplace un caractère, ex 6-> 5 ou même 6->6, la, seulement, ACCESS, (enfin, la textbox) convertit ta date en 06.08.2004. c bon :)

Je voulais donc une fonction qui corrige ce format quand tu ne touches pas a la date / textbox (ex : la date par défaut te convient)

Kapisch ?

:)
amicalement

Commentaire de crenaud76 le 06/08/2004 09:05:13

Et comme cela !
Format$(LaDate,"dd.mm.yyyy")
Ca vous suffit pas ?

Commentaire de el_teedee le 06/08/2004 09:50:05

.... Lol

bah oui, merci, je savais pas, dd -> 06, ddd-> initiales du jour, dddd-> jour en toutes lettres, pareil pour "mm","mmm", ou "mmmm"

Donc Format$(LaDate,"dddd.mmmm.yyyy") donne :
Vendredi.Aout.2004
thx crenaud76

Commentaire de moustachu le 06/08/2004 15:04:31

et d tout seul?
Format(LaDate, "d.m.yyyy")

++
Moustachu

Commentaire de FAS le 27/08/2004 19:49:14

d -> 6 par exemple, sans 0.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales