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

Macros et VBA Excel Discussion :

Format date instable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut Format date instable
    Bonjour,

    J'ai commencé le développement d'une appli de gestion sans me soucier ailleurs que dans les paramètres régionnaux de w7 de formater les dates et tout fonctionnait bien.

    Puis après l'installation de l'utilitaire Canal+ à la demande (seul évènement extérieur intervenu sur mon PC) mes dates se sont affichées "mm/dd/yyyy"

    J'ai modifié mon code format "dd/mm/yyyy" sans succès.
    J'ai trouvé ici je crois un post indiquant que VBA interprétait format date bizarement et que pour obtenir "dd/mm/yyyy" il fallait coder "mm/dd/yyyy", ce que je fis. Et effectivement, cela fonctionnait correctement, jusqu'à ce matin où de nouveau les dates s'affichent "mm/dd/yyyy".

    Quelqu'un a-t-il une explication ?

    Je précise que les dates affichées dans les formulaires sont enregistrées dans les tables exclusivement par code et formatées de la même façon.

    Merci de vodre éclairage
    Daniel

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Quel est le format de date dans les paramètres régionaux de Windows ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Bonjour Daniel C.,

    date courte jj/MM/aaa
    date longue 1111 1 MMMM aaaa

    merci

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Peux-tu poster le code que tu utilises ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Peux-tu poster le code que tu utilises ?
    enregistement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    vCellule.Offset(0, 7) = Format(Lab_Date.Caption, "mm/dd/yyyy") 'Date de création du devis
    vCellule.Offset(0, 8) = Format(Lab_DateModif.Caption, "mm/dd/yyyy") 'Date de la dernière modification
    vCellule.Offset(0, 9) = Format(TxtDateOk, "mm/dd/yyyy") 'Date de l'acceptation par le client
    vCellule.Offset(0, 10) = Format(TxtDateCloturé.Text, "mm/dd/yyyy") 'Date de clôture de l'affaire(A la fermeture de la fiche de prod)
    vCellule.Offset(0, 11) = Format(TxtDateRefusé.Text, "mm/dd/yyyy") 'Date du refus du client
    Chargement de l'USF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Lab_Date.Caption = Format(vCellule.Offset(0, 7), "mm/dd/yyyy")
    Lab_DateModif.Caption = Format(vCellule.Offset(0, 8), "mm/dd/yyyy")
    TxtDateOk.Text = Format(vCellule.Offset(0, 9), "mm/dd/yyyy")
    TxtDateCloturé.Text = Format(vCellule.Offset(0, 10), "mm/dd/yyyy")
    TxtDateRefusé.Text = Format(vCellule.Offset(0, 11), "mm/dd/yyyy")
    Merci
    Daniel

  6. #6
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut Précision complémentaire
    J'ai désinstallé Canal+ à la demande, rebooté : le code format("mm/dd/yyyy") donne toujours mm/dd/yyyy, ce qui en soi est bien normal.

    Je modifie le code en format("dd/mm/yyyy") et j'obtiens bien dd/mm/yyyy.
    Ce qui est bien normal aussi.

    Mais je suis obligé de couvrir le risque de voir ressurgir ce problème chez l'utilisateur après l'installation d'un logiciel. Et je ne trouve pas le code permettant d'initialiser les paramètres régionnaux pour faire tourner mon appli et les remettre à l'état initial à la sortie.

    Merci
    Daniel

  7. #7
    Expert éminent


    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
    Par défaut
    C'est quoi le contrôle : "Lab_Date" ? comment est-t'il renseigné ?

    pourquoi utilise tu Format ? format permet de transformer les dates en chaine de caractères... pourquoi ne pas mettre directement ta date au format date dans ta cellule..

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    La commande "Format" te renvoie du texte, alors qu'il te faut du format "Date".
    A l'initialisation, mets (je n'ai modifié que la première ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lab_Date.Caption = vcellule.Offset(0, 7)
    et à l'écriture dans la cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vcellule.Offset(0, 7).NumberFormat = "dd/mm/yyyy"
    vcellule.Offset(0, 7) = Lab_Date.Caption

  9. #9
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Citation Envoyé par bbil Voir le message
    C'est quoi le contrôle : "Lab_Date" ? comment est-t'il renseigné ?

    pourquoi utilise tu Format ? format permet de transformer les dates en chaine de caractères... pourquoi ne pas mettre directement ta date au format date dans ta cellule..
    Bonjour Bbil,

    Lab_Date est une étiquette que je charge automatiquement et que l'utilisateur ne peut pas modifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Lab_Date.Caption = Format(Date, "dd/mm/yyyy")
    'sachant qu'avant mon problème je codais tout simplement
    Lab_Date.Caption = Date
    Je n'utilisais pas Format avant mon problème et tout fonctionnait très bien !
    Les colonnes recevant les dates sont formatées date.
    Merci
    Daniel

  10. #10
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Bonjour Daniel C.,

    Ok avec vos deux réponses je comprends la cohérence de ce que vous me proposez et je ferais demain les modifs en ce sens et un test en réinstallant l'appli de Canal+. Je passerais en résolu si ok.

    Merci et bon dimanche
    Daniel

  11. #11
    Expert éminent


    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
    Par défaut
    Citation Envoyé par danisoaz Voir le message
    Bonjour Bbil,

    Lab_Date est une étiquette que je charge automatiquement et que l'utilisateur ne peut pas modifier.
    ...
    et alors pourquoi alors ne pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vCellule.Offset(0, 7) = Date 'Date de création du devis
    ainsi tout est au format Date ...

    Citation Envoyé par danisoaz Voir le message
    ....
    Je n'utilisais pas Format avant mon problème et tout fonctionnait très bien !
    Les colonnes recevant les dates sont formatées date.
    ...
    Ce n'est pas l'utilisation format qui cause problème mais la façon dont on l'utilise... format renvoi une chaine de caractére et c'est la transformation de cette chaine en type date qui dépend des paramètres régionaux

    tu devrais avoir le même problème avec la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vcellule.Offset(0, 7) = Lab_Date.Caption
    qui laisse au système le choix de la méthode pour transformer la chaine contenu par Lab_Date en date.

  12. #12
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut OK
    Bonjour Bbil et Daniel C.,

    J'ai supprimé tous les Format et tout est ok.
    Mais comme à l'origine je n'utilisais pas non plus cette fonction et que tout allait bien, je ne suis pas plus tranquille que ça.

    Merci beaucoup.
    Daniel

  13. #13
    Expert éminent


    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
    Par défaut
    Tu as fait quoi exactement ? relis mon dernier message ..!

  14. #14
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Citation Envoyé par bbil Voir le message
    Tu as fait quoi exactement ? relis mon dernier message ..!
    J'ai fait comme tu m'as dit ! Pour les dates automatiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vCellule.Offset(0, 7) = Date
    Et pour les autres j'oblige la saisie par choix dans un contrôle calendar et vdate étant la variable que je récupère, je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vCellule.Offset(0, 8) = vDate
    Enfin j'ai contrôlé le format de toutes mes colonnes dates dans les tables.

    C'est bien ça ?

    Merci
    Daniel

  15. #15
    Expert éminent


    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
    Par défaut


    pour comprendre le problème que je soulever tu pourrai essayer de remplace Date par DateSerial et ainsi choisir ta date de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim iAn as integer
    Dim iMois As integer
    Dim iJour as integer
    iAn = 2011
    iMois = 10
    iJour = 1
     
    Lab_Date.Caption =  dateSerial(iAn,iMois,iJour)
    vCellule.Offset(0, 7) = Lab_Date.Caption
    et tu pourras mettre en évidence un problème avec les dates < au jour 12 si ton paramètres régionaux 'mm/dd/yyyy' ...

    L'utilisation de format n'est pas interdite .. elle te permet de choisir le format de visualisation de ta date dans une chaîne de caractères (par exemple ton Lab_Date.Caption) ...

    mais tu ne peu pas l'utiliser pour assigner un format d'affichage à une variable de type Date car le type Date n'intègre pas son format d'affichage
    Citation Envoyé par aide en ligne
    Lesvariables de type Date sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59

  16. #16
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Bonjour Bbil,

    J'ai bien compris l'utilisation de format.
    Je suis un peu sur le gaz pour installer une nouvelle version, donc je garde ton test au chaud, je reviendrais dessus après.

    Merci
    Daniel

  17. #17
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Bonjour Bbil,

    Après installation et désinstallation de l'application "Canal+ à la demande" et observation des tests, je confirme que ce programme mets bien la zone dans la gestion des dates sans que les paramètres régionnaux soient modifiés !
    Pour le principe, je vais leur signaler mais je doute qu'ils s'en préoccupent.

    Cordialement

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

Discussions similaires

  1. Format date : y'a forcément plus simple...
    Par ZERS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/12/2004, 15h28
  2. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20
  3. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 10h18
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 17h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 08h37

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