IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] mauvaise affichage d'une date


Sujet :

VB 6 et antérieur

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut [VB6] mauvaise affichage d'une date
    salut

    je désire obtenir la date actuel et la formater

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim today As Date
    today = Now
    today = Format(today, "dd/mm/yyyy")
    MsgBox today
    a l'affichage j'obtiens

    2006-10-06 au lieu de 10-06-2006

    c'est comme si le formatage n'était pas pris en compte

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Il nous manque certainement des informations :
    Ce que tu as écrit n'est pet-être pas exactement ce que tu as dans ton appli car, soigneusement copié-collé, il fonctionne chez moi sans aucun problème !

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par robert_trudel
    salut

    je désire obtenir la date actuel et la formater

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim today As Date
    today = Now
    today = Format(today, "dd/mm/yyyy")
    MsgBox today
    a l'affichage j'obtiens

    2006-10-06 au lieu de 10-06-2006

    c'est comme si le formatage n'était pas pris en compte
    Le retour de format ... est une chaine .., si tu le place dans une variable de type date tu le transforme explicitement en type date .....
    l'écriture correcte serai plutôt du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim today As Date
    dim stToday As string
    today = Now
    sttoday = Format(today, "dd/mm/yyyy")
    MsgBox sttoday
    mais voilà cela ne marche pas non plus .. l'instruction Format utilisant les séparateurs de date (/)sélectionnné dans panneau de configuration ..:
    voir aide en ligne

    Citation Envoyé par aide en ligne format
    Cet exemple montre diverses utilisations de la fonction Format pour mettre des valeurs au format choisi sur la base de formats nommés ou de formats définis par l'utilisateur. Pour ce qui concerne le séparateur de date (/), d'heure ( et le littéral AM/PM, la sortie formatée réellement affichée par votre système dépend des paramètres régionaux avec lesquels le code s'exécute. Lorsque les heures et les dates sont affichées dans l'environnement de développement, ce sont les formats heure et date raccourcis des paramètres régionaux qui sont utilisés. Lorsqu'ils s'affichent par exécution du code, les formats heure et date raccourcis utilisés sont ceux des paramètres système, qui peuvent différer des paramètres régionaux. Pour cet exemple, les paramètres Français-France sont utilisés.
    il ne te reste plus qu'a finir le formatage de ta chaine par un replace par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stToday = Replace(stToday, "-", "/")
    (peu-être faudrai-t'il en sus ... récupérer le paramétre XP de séparateur de date ( / ,- ..) afin de rendre le code plus universel) ..

    ou tu construit ta chaîne autrement du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stToday = stToday = Day(now) & "/" & Month(now) & "/" & year(now)

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    J'ai mis un tag VB6 dans ton titre en me référant à ta question précédente.
    Corrige-le si ce n'est pas correct et pense à le faire toi-même les prochaines fois.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Les paramètres régionaux n'interviennent quen raison de :
    Dim Today as date (enlevez-le) et essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
      today = Now
      today = Format(today, "dd-mm-yyyy")
      MsgBox today
      today = Format(today, "dd/mm-yyyy")
      MsgBox today
      today = Format(today, "dd/mm/yyyy")
      msgbox today
    End Sub
    Rien n'empêche ensuite, après affichage, de faire ce que l'on veut.
    Il ne s'agit là que d'un affichage. Alors ?

    Si Option explicit est là : Dim today as string (ce sont des strings, pour un affichage)

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est bien ce qu'il me semblait car si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim today
    today = now
    Today = format(cdate(today),"yyyy/mm/dd")
    on obtient bien "2006/06/11"

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par jmfmarques
    Les paramètres régionaux n'interviennent quen raison de ?.
    ....
    essai ton code aprés avoir modifier tes paramétres régionaux... avec - comme séparateur de date ..

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Oh !

    Quels que soient les paramètres régionaux...
    Admettons que le séparateur soit un /.
    Je l'ai changé en -, oui ou non ? (dans l'un des msgboxes)
    Si c'est un - : je l'ai changé en / dans un autre msgbox, non ?
    Il y a même un msgbox avec un / et un -

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim today
    today = "2006-06-11" 'Now
    today = Format(CDate(today), "dd/mm/yyyy") 'MsgBox today
    Text1.Text = today
    et j'obtiens bien "11/06/2006"

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par bbil
    essai ton code aprés avoir modifier tes paramétres régionaux... avec - comme séparateur de date ..
    PS : je n'ai testé que sous excel VBA.. j'ai pas vérifié si cela se passai pareil en VB6... j'y cours... (sauf si jmf.. le fais avant moi..)

    [edit] finalement j'ai testé en VB6.. et même punition ... les 2 codes ( celui de jmf et et de ouks ..) renvoi toujours '11-06-2006' ...

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok, bbil, J'ai effectivement "11-06-2006" après avoir (re)modifié les paramètres régionaux et redémarré ma session
    Et là, rien à faire sans découper la date pour modifier les séparateurs.
    Jamais rencontré ce cas de figure si ce n'est dans des csv et là, la modif du séparateur est possible dans VBA-E.
    J'ai donc appris quelque chose et je me coucherai moins c... ce soir.
    Une fois de plus, merci bbil.

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par ouskel'n'or
    Je viens de changer les paramètre régionnaux et mon code (effacé) fonctionne sans problème.

    Comme j'ai eu ce type de problème à mes début, j'utilise toujours un string et je mets cdate(LeString) pour formater. Et comme depuis je n'ai plus eu de problème de date, je "suppose" que la méthode est la bonne... Jusqu'à ce qu'on me démontre le contraire... Et j'ai toujours soif d'apprendre de mes aînés

    A+
    tiens la démo.. bon le code est un peu long... tout d'abords récupére les le code de la FAQ permettant la lecture des paramétres régionaux:
    ici :
    Comment récupérer les paramètres régionaux, comme le séparateur décimal ou celui des milliers ?

    compléte le avec les déclaration suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, _
        ByVal LCType As Long, ByVal lpLCData As String) As Long
     
    Private Const LOCALE_SDATE = &H1D        'séparateur date
    ensuite voila la démo demandée..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub MaDemo()
     Dim stMemo As String
     Dim stNewSep As String
     Dim Locale As Long
     stMemo = ParametreRegional(LOCALE_SDATE)
     MsgBox "Séparateur de date initial : " & stMemo
     Locale = GetUserDefaultLCID()
     SetLocaleInfo Locale, LOCALE_SDATE, "/"
     stNewSep = ParametreRegional(LOCALE_SDATE)
     MsgBox "Avec séparateur : " & stNewSep & " Code à ousk : " & Format(CDate(Now), "dd/mm/yyyy")
     SetLocaleInfo Locale, LOCALE_SDATE, "-"
     stNewSep = ParametreRegional(LOCALE_SDATE)
     MsgBox "Avec séparateur : " & stNewSep & " Code à ousk : " & Format(CDate(Now), "dd/mm/yyyy")
     'Retour paramétre régional intial ..
     SetLocaleInfo Locale, LOCALE_SDATE, stMemo
    End Sub
    PS : Ma démo à quelque minute de retard .. mais bon elle été prête..

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par ouskel'n'or
    Ok, bbil, J'ai effectivement "11-06-2006" après avoir (re)modifié les paramètres régionaux et redémarré ma session
    Et là, rien à faire sans découper la date pour modifier les séparateurs.
    Jamais rencontré ce cas de figure si ce n'est dans des csv et là, la modif du séparateur est possible dans VBA-E.
    J'ai donc appris quelque chose et je me coucherai moins c... ce soir.
    Une fois de plus, merci bbil.
    ? sous XP pro j'ai pas besoin de redémarrer ma session ..?

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai trouvé ça mais tu l'as peut-être déjà donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim today
    today = Format(Day(Now), "00") & "/" & Format(Month(Now), "00") & "/" & Year(Now)
    MsgBox today
    Et merci pour ton code que j'ai eu le temps de lire avant que tu ne l'effaces

    Edit
    Oui, Replace est plus mieux bien

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Si vraiment on veut ignorer les paramètres régionaux pour l'affichage, pourquoi ne pas se contenter de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click()
      Dim today As String
      today = Month(Now) & "/" & Day(Now) & "/" & Year(Now)
      MsgBox Format(Now, "dd-mm-yyyy") & " est transformé pour l'affichage en " & today
    End Sub

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je vais donc enfoncer le clou... car

    Private Sub Command1_Click()
    Dim today As String
    today = Month(Now) & "/" & Day(Now) & "/" & Year(Now)
    MsgBox Format(Now, "dd-mm-yyyy") & " est transformé pour l'affichage en " & today
    End Sub

    donne "11/6/2006" et non "11/06/2006"

  17. #17
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ahhhhh...!
    alors, dans ce cas ouskélien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click()
      Dim today As String
      today = Format(Month(Now), "00") & "/" & Format(Day(Now), "00") & "/" & Format(Year(Now), "0000")
      MsgBox Format(Now, "dd-mm-yyyy") & " est transformé pour l'affichage en " & today
    End Sub
    I YAN A PLULICLOU !

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Yanaploucésour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Format pour l'affichage d'une date
    Par yupa dans le forum C++
    Réponses: 2
    Dernier message: 03/03/2008, 11h52
  2. Récupération et Affichage d'une date dans un formulaire
    Par skeeler dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/02/2008, 16h43
  3. Modifier l'affichage d'une date
    Par VitamineC dans le forum Access
    Réponses: 8
    Dernier message: 05/11/2007, 12h29
  4. affichage d'une date depuis mysql
    Par kitty2006 dans le forum Requêtes
    Réponses: 7
    Dernier message: 22/08/2006, 17h56
  5. Affichage d'une date dans x jours
    Par Paulux1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/07/2006, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo