Problème de date
Le
Denis
Bonjour tout le monde,
Je me trouve confronté à un sérieux problème avec les dates et j'ignore
totalement comment le résoudre. Dans mon application j'effectue la saisie
de date, soit de façon manuelle ou encore en sélectionnant une date dans le
calendrier. Il va de soi que je vérifie si ce qui est entré est bien une
date valide avec la fonction IsDate. Pas de problème jusque là. Par contre
lorsque mon application tourne sur un ordianteur dont les paramètres
régionaux ne sont pas comme ceux défini sur le mien, le format de date n'est
plus valide. Par exemple dans mon cas les dates sont sous le format
AAAA-MM-JJ, puisque je veux obtenir la date dans ce format, j'oblige aussi
la saisie de 10 caractères pour valider la date. Ma questions est donc de
quelle façon, lorsque je clique sur le calendrier, je peux retourner dans ma
zone de texte, la date sous ce format, peu importe les paramètres établis.
Actuellement, la machine sur laquelle j'ai testé mon application a un format
de date sous le format JJ-MM-AA. Donc, lorsque je clique sur une date dans
le calendrier, la date qui m'est retourné dans ma zone de texte est
26-08-03. Comme de raison puisque je n'ai pas 10 caractères, la validation
est incorrecte. J'avais pensé refaire une String avec la date et la
manipuler à ma guise, mais encore là je ne crois pas que ce soit la solution
idéale. Si je manipule la date qui me serait retourner, pour récupérer les
différentes parties de ma date pour en refaire une String dans le format que
je décide, je serais encore coincé si les paramètres deviennent AA-MM-JJ, je
confondrais alors les jours et les années.
Merci à ceux qui m'apporteront la solution à ce problème.
Denis P
Je me trouve confronté à un sérieux problème avec les dates et j'ignore
totalement comment le résoudre. Dans mon application j'effectue la saisie
de date, soit de façon manuelle ou encore en sélectionnant une date dans le
calendrier. Il va de soi que je vérifie si ce qui est entré est bien une
date valide avec la fonction IsDate. Pas de problème jusque là. Par contre
lorsque mon application tourne sur un ordianteur dont les paramètres
régionaux ne sont pas comme ceux défini sur le mien, le format de date n'est
plus valide. Par exemple dans mon cas les dates sont sous le format
AAAA-MM-JJ, puisque je veux obtenir la date dans ce format, j'oblige aussi
la saisie de 10 caractères pour valider la date. Ma questions est donc de
quelle façon, lorsque je clique sur le calendrier, je peux retourner dans ma
zone de texte, la date sous ce format, peu importe les paramètres établis.
Actuellement, la machine sur laquelle j'ai testé mon application a un format
de date sous le format JJ-MM-AA. Donc, lorsque je clique sur une date dans
le calendrier, la date qui m'est retourné dans ma zone de texte est
26-08-03. Comme de raison puisque je n'ai pas 10 caractères, la validation
est incorrecte. J'avais pensé refaire une String avec la date et la
manipuler à ma guise, mais encore là je ne crois pas que ce soit la solution
idéale. Si je manipule la date qui me serait retourner, pour récupérer les
différentes parties de ma date pour en refaire une String dans le format que
je décide, je serais encore coincé si les paramètres deviennent AA-MM-JJ, je
confondrais alors les jours et les années.
Merci à ceux qui m'apporteront la solution à ce problème.
Denis P

Poser une question


params regionaux de l'utilisateur, puis mettre les params regionaux aux
valeurs que tu souhaite et en fin de procédure rétablir les valeurs
sauvegardées. Voici mon bout de code :
Private Function Get_locale() ' Récupère les variables de l'utilisateur
loggé
Dim Symbol As String
Dim iRet1 As Long
Dim iRet2 As Long
Dim lpLCDataVar As String
Dim pos As Integer
On Error GoTo Get_locale_Error
locale = GetUserDefaultLCID()
MyValues.DateFormat = "dd/MM/yyyy"
MyValues.SeparatorData = "/"
MyValues.SDecimal = "."
MyValues.Smie = " "
iRet1 = GetLocaleInfo(locale, LocalVariables.LOCALE_SDATE, lpLCDataVar,
0)
Symbol = String$(iRet1, 0)
iRet2 = GetLocaleInfo(locale, LocalVariables.LOCALE_SDATE, Symbol,
iRet1)
pos = InStr(Symbol, Chr$(0))
If pos > 0 Then
Symbol = Left$(Symbol, pos - 1)
End If
YourValues.SeparatorData = Symbol
iRet1 = GetLocaleInfo(locale, LocalVariables.LOCALE_SSHORTDATE,
lpLCDataVar, 0)
Symbol = String$(iRet1, 0)
iRet2 = GetLocaleInfo(locale, LocalVariables.LOCALE_SSHORTDATE, Symbol,
iRet1)
pos = InStr(Symbol, Chr$(0))
If pos > 0 Then
Symbol = Left$(Symbol, pos - 1)
End If
YourValues.DateFormat = Symbol
iRet1 = GetLocaleInfo(locale, LocalVariables.LOCALE_SDECIMAL,
lpLCDataVar, 0)
Symbol = String$(iRet1, 0)
iRet2 = GetLocaleInfo(locale, LocalVariables.LOCALE_SDECIMAL, Symbol,
iRet1)
pos = InStr(Symbol, Chr$(0))
If pos > 0 Then
Symbol = Left$(Symbol, pos - 1)
End If
YourValues.SDecimal = Symbol
iRet1 = GetLocaleInfo(locale, LocalVariables.LOCALE_STHOUSAND,
lpLCDataVar, 0)
Symbol = String$(iRet1, 0)
iRet2 = GetLocaleInfo(locale, LocalVariables.LOCALE_STHOUSAND, Symbol,
iRet1)
pos = InStr(Symbol, Chr$(0))
If pos > 0 Then
Symbol = Left$(Symbol, pos - 1)
End If
YourValues.Smie = Symbol
On Error GoTo 0
Exit Function
Get_locale_Error:
MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la
procédure Get_locale dans le Module Mod_JMO" & vbCrLf & "Consulter *******
au service informatique !"
End Function
'*************************
Private Function Set_locale() 'Met tes valeurs :)
Dim iRet As Long
On Error GoTo Set_locale_Error
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_SDATE,
MyValues.SeparatorData)
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_SSHORTDATE,
MyValues.DateFormat)
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_SDECIMAL,
MyValues.SDecimal)
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_STHOUSAND,
MyValues.Smie)
On Error GoTo 0
Exit Function
Set_locale_Error:
MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la
procédure Set_locale dans le Module Mod_JMO" & vbCrLf & "Consulter ********
au service informatique !"
End Function
'**************************
Private Function Restore_Locale() 'remet les valeurs de l'utilisateur ds
l'OS. Attention en mode débuggage tu risques de ne pas passer par cette f°
ce qui pose qq pbl
Dim iRet As Long
On Error GoTo Restore_Locale_Error
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_SDATE,
YourValues.SeparatorData)
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_SSHORTDATE,
YourValues.DateFormat)
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_SDECIMAL,
YourValues.SDecimal)
iRet = SetLocaleInfo(locale, LocalVariables.LOCALE_STHOUSAND,
YourValues.Smie)
On Error GoTo 0
Exit Function
Restore_Locale_Error:
MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la
procédure Restore_Locale dans le Module Mod_JMO" & vbCrLf & "Consulter
************ au service informatique !"
End Function
Et voilli-voillou
John Fuss
"Denis" #$
le
contre
n'est
ma
format
dans
validation
solution
les
que
je
Mais je crois avoir trouvé plus simple, il fallait juste y penser.
Je fais simplement
TextBox.Text = Format (Calendar1.Value, "YYYY-MM-DD")
Après tout Windows retourne seulement une série de chiffre pour définir une
date, restait juste à les formater sous le format désiré. Tout ça pour dire
que bien des fois ce sont les choses les plus simples qui arrivent à nous
faire casser la tête un bon moment. Par contre je retiens ta méthode, elle
peut très bien m'être utile un moment donné.
Salut
Denis P
"John Fuss" news:%
lpLCDataVar,
Symbol,
********
news:
saisie
une
aussi
de
dans
établis.
AA-MM-JJ,
en realité un TimeStamp. Et de là tu peux obtenir tout les formats que tu
veux ! Ce genre de format est plus facile à manoeuvrer que de faire un
Format() direct. Si tu dois réutiliser fréquemment la meme date !
"Denis" news:%23KIHtB%
une
dire
elle
les
Symbol,
Symbol,
*******
f°
j'ignore
dans
donc
récupérer
format