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
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
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
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
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
de date sous le format JJ-MM-AA. Donc, lorsque je clique sur une date
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
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
idéale. Si je manipule la date qui me serait retourner, pour récupérer
différentes parties de ma date pour en refaire une String dans le format
je décide, je serais encore coincé si les paramètres deviennent AA-MM-JJ,
confondrais alors les jours et les années.
Merci à ceux qui m'apporteront la solution à ce problème.
Denis P
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
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
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
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
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
de date sous le format JJ-MM-AA. Donc, lorsque je clique sur une date
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
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
idéale. Si je manipule la date qui me serait retourner, pour récupérer
différentes parties de ma date pour en refaire une String dans le format
je décide, je serais encore coincé si les paramètres deviennent AA-MM-JJ,
confondrais alors les jours et les années.
Merci à ceux qui m'apporteront la solution à ce problème.
Denis P
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
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
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
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
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
de date sous le format JJ-MM-AA. Donc, lorsque je clique sur une date
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
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
idéale. Si je manipule la date qui me serait retourner, pour récupérer
différentes parties de ma date pour en refaire une String dans le format
je décide, je serais encore coincé si les paramètres deviennent AA-MM-JJ,
confondrais alors les jours et les années.
Merci à ceux qui m'apporteront la solution à ce problème.
Denis P
Ok, je suis tombé sur le même pbl. La solution consiste à sauvegarder les
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,
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,
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" a écrit dans le message de
#$
> 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
> 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
> 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
> la saisie de 10 caractères pour valider la date. Ma questions est donc
> quelle façon, lorsque je clique sur le calendrier, je peux retourner
ma
> zone de texte, la date sous ce format, peu importe les paramètres
>
> 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
je
> confondrais alors les jours et les années.
>
> Merci à ceux qui m'apporteront la solution à ce problème.
>
> Denis P
>
>
Ok, je suis tombé sur le même pbl. La solution consiste à sauvegarder les
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,
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,
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" <denispronovostNospam@sympatico.ca> a écrit dans le message de
#$ojr29aDHA.1744@TK2MSFTNGP12.phx.gbl...
> 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
> 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
> 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
> la saisie de 10 caractères pour valider la date. Ma questions est donc
> quelle façon, lorsque je clique sur le calendrier, je peux retourner
ma
> zone de texte, la date sous ce format, peu importe les paramètres
>
> 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
je
> confondrais alors les jours et les années.
>
> Merci à ceux qui m'apporteront la solution à ce problème.
>
> Denis P
>
>
Ok, je suis tombé sur le même pbl. La solution consiste à sauvegarder les
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,
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,
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" a écrit dans le message de
#$
> 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
> 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
> 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
> la saisie de 10 caractères pour valider la date. Ma questions est donc
> quelle façon, lorsque je clique sur le calendrier, je peux retourner
ma
> zone de texte, la date sous ce format, peu importe les paramètres
>
> 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
je
> confondrais alors les jours et les années.
>
> Merci à ceux qui m'apporteront la solution à ce problème.
>
> Denis P
>
>
Merci John,
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
date, restait juste à les formater sous le format désiré. Tout ça pour
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,
peut très bien m'être utile un moment donné.
Salut
Denis P
"John Fuss" a écrit dans le message de
news:%
> Ok, je suis tombé sur le même pbl. La solution consiste à sauvegarder
> 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,
> 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,
> 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
> 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" a écrit dans le message de
news:
> #$
> > Bonjour tout le monde,
> >
> > Je me trouve confronté à un sérieux problème avec les dates et
> > 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
> 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
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
> les
> > différentes parties de ma date pour en refaire une String dans le
> 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
> >
> >
>
>
Merci John,
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
date, restait juste à les formater sous le format désiré. Tout ça pour
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,
peut très bien m'être utile un moment donné.
Salut
Denis P
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de
news:%234Hes79aDHA.2256@TK2MSFTNGP10.phx.gbl...
> Ok, je suis tombé sur le même pbl. La solution consiste à sauvegarder
> 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,
> 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,
> 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
> 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" <denispronovostNospam@sympatico.ca> a écrit dans le message de
news:
> #$ojr29aDHA.1744@TK2MSFTNGP12.phx.gbl...
> > Bonjour tout le monde,
> >
> > Je me trouve confronté à un sérieux problème avec les dates et
> > 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
> 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
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
> les
> > différentes parties de ma date pour en refaire une String dans le
> 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
> >
> >
>
>
Merci John,
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
date, restait juste à les formater sous le format désiré. Tout ça pour
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,
peut très bien m'être utile un moment donné.
Salut
Denis P
"John Fuss" a écrit dans le message de
news:%
> Ok, je suis tombé sur le même pbl. La solution consiste à sauvegarder
> 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,
> 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,
> 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
> 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" a écrit dans le message de
news:
> #$
> > Bonjour tout le monde,
> >
> > Je me trouve confronté à un sérieux problème avec les dates et
> > 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
> 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
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
> les
> > différentes parties de ma date pour en refaire une String dans le
> 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
> >
> >
>
>