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 :

Problème de date (format, comparaison)


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut Problème de date (format, comparaison)
    Bonjour,

    voici le problème auquel je suis confronté
    je souhaiterais faire ceci (j'écris du pseudo code) sous VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ancienneDate = dateActuelle - 21 jours
     
    while ancienneDate <= dateActuelle
            ...
           ancienneDate = ancienneDate +1 jour
    fin while
    ce qui me pose problème, c'est que toutes les dates doivent être au format "mm-dd-yyyy" (car base access). Et ce doit bien être des formats Date pour permettre d'ajouter un jour à ancienneDate dans la boucle while.

    j'ai testé ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim date1 as date
    date1 = CDate(dateAdd(-21,"d",Format(Date, "dd/mm/yyyy")))


    mais cela ne va pas car la fonction CDate utilise le format de date du système, qui est chez moi "dd-mm-yyyy"

    je cale un peu, si certains peuvent m'aider, merci...

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Il ne faut pas déclarer ta variable comme date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Ch As String
    Ch = Format(DateAdd("d", -21, Date), "mm/dd/yyyy")

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut
    merci pour ta réponse mais si c'est un type string, comment je fais pour l'incrémenter d'un jour dans ma boucle while ?

  4. #4
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    As tu fait l'essai ?
    Si j'essaye de faire comme ci dessous, ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Ch As String
    Ch = Format(DateAdd("d", -21, Date), "mm/dd/yyyy")
    While Ch < Date
      Ch = DateAdd("d", 1, Ch)
      Debug.Print Ch
    Wend

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut
    salut,

    si je fais comme tu le suggères, voici ce que ça donne :

    après son instanciation, Ch vaut 06/03/2011 (ça c'est normal)
    il entre dans la boucle, mais après l'incrémentation, cela passe à 07/03/2011, au lieu de 06/04/2011

    cela s'explique surement du fait que ma machine (windows) est configuré avec un format de date jj/mm/yyyy, donc quand je lui dis d'incrémenter les jours, il incrémente la première valeur de la date... et donc mon cas, c'est les mois. Je ne sais pas si je suis bien clair...

    ps : si je passe ma machine en mode "mm/dd/yyyy", cela résout mon souci, mais je ne veux pas faire comme ça

  6. #6
    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
    bonsoir,

    pour travailler sur des dates il vaut mieux utiliser des données de type date, et tu ne passe en chaine que pour l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim d As Date
     d = DateAdd("d", -21, Date)
     Debug.Print ">>>" & d & " : " & Format(d, "mm/dd/yyyy")
     While d < Date
      d = DateAdd("d", 1, d)
      Debug.Print d & " : " & Format(d, "mm/dd/yyyy")
     Wend

Discussions similaires

  1. [SQL Server 05] Problème avec le format de la date
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/05/2008, 09h02
  2. Problème avec les Formats de Date
    Par sebac dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/01/2008, 15h30
  3. Problème requête si format Date à Null
    Par Thetonio007 dans le forum SQL
    Réponses: 7
    Dernier message: 08/06/2007, 10h10
  4. Problème de Date (lié au format)
    Par turie dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/03/2007, 13h16
  5. Encore un problème sur le format d'une date!
    Par bygui dans le forum Langage
    Réponses: 1
    Dernier message: 26/06/2006, 08h41

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