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

Access Discussion :

Problème gestion de date en vba [AC-2013]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 38
    Points
    38
    Par défaut Problème gestion de date en vba
    Bonjour,

    Dans du code VBA, je dois comparer des dates venant de tables et des dates venant d'une saisie clavier.


    J'ai un soucis pour les dates dont vba ou access ne peut déterminer si la date est du format jj/mm/yyyy ou du format mm/dd/yyyy exemple 9 janvier 2014 09/01/2014 qui peut aussi être visualisé comme 01/09/2014.

    Quand je fais des comparaisons de dates, le format de mes inputs change si les mois et les jours ne peuvent pas être distingués. J'ai trouvé la littérature suivante qui dit bien y avoir un problème....
    Requête SQL
    - Access et le moteur Jet utilisent toujours la notation US (format "mm/dd/yyyy") en interne, pour les calculs et opérations.
    - Access traduit ces dates au format indiqué dans le panneau de contrôle Windows, uniquement dans l'interface QBE (Query By Example = création de requêtes, dans le mode Création).
    Pour illustrer cela, pendant la création d'une requête :
    - saisir "=#09/11/2004#" comme Critère, sous n'importe quel champ date d'une requête en mode création,
    - passer en mode SQL : le texte contient "= #11/09/2004#", mode US, pour exécution de la requête par le moteur Jet.

    Calculs VBA
    N'utiliser que le format US, le seul que les fonctions de date peuvent interpréter.

    Contrôles de formulaires : comme l'interface QBE pour les requêtes, Access affiche par défaut les dates au format défini dans le panneau de contrôle de Windows.
    Pour nous, format français "dd/mm/yyyy".
    La propriété Format du contrôle n'a aucune influence sur la valeur qui sera stockée dans les tables (voir ci-dessous : c'est un nombre Double qui est stocké). Donc, vous pouvez mettre n'importe quel format dans un contrôle, y compris le format japonais ("yyyy/mm/dd", très utilisé pour les tris alphabétiques).

    Dernière règle : lors d'une saisie dans l'interface QBE, directement dans un champ de table, de requête ou dans un contrôle :
    - il y a systématiquement interprétation/inversion des jours/mois, comme ci-dessus, si les deux chiffres sont <= 12 ;
    - si l'un des deux est > 12, c'est obligatoirement un jour. Ça ne peut pas être un n° de mois.




    Mais comment éviter cette dernière règle? Le format(madate, "dd/mm/yyyy") ne résoud pas mon problème.


    Merci d'avance,

    david

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour

    Personnellement je n'utilise plus pour mes saisies que le format aaaa-mm-jj qui évite les ambiguités.

    As-tu essayé en définissant définir un format d'affichage sur ta zone de saisie ?

    A+

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai plus Access pour tester, mais VBA dispose d'une fonction qui me semble appropriée à ton cas : DateSerial()

    Tu pourrais l'utiliser pour avoir la valeur numérique d'une date en VBA. Ensuite, il te resterait juste à faire des comparaisons sur des nombres...

    Mais, comme j'ai dit; je ne peux pas tester dans la "vraie vie avec Access".

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    merci pour votre aide,
    le problème venait de la connexion à la db oracle via ODBC. Là, il est possible de sélectionner quelle gestion des dates il faut utiliser (soit oracle, soit US, soit ce qui est dans les regionals settings de windows).


    Encore merci et bonne fin de journée,

    ttfme

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

Discussions similaires

  1. [XL-2007] Gestion des dates en vba
    Par AgriPhilou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/01/2014, 22h23
  2. Gestion des dates en VBA/Excel ?
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2012, 10h34
  3. [VBA] Gestion des dates nulles provenant d'un recordset
    Par wperezrobles dans le forum Access
    Réponses: 11
    Dernier message: 28/09/2006, 18h02
  4. Problème de date en vba-access 2000
    Par rob2-9 dans le forum Access
    Réponses: 1
    Dernier message: 30/08/2006, 12h13
  5. [VBA-E] Problème avec des dates !
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/03/2006, 13h12

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