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 :

Gros problèmes de Date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Par défaut Gros problèmes de Date
    Bonjour,

    J'ai de gros problèmes avec la comparaison de dates.

    Je cherche a savoir si une date est inférieure à l'autre du type d1 < d2

    J'ai essayer des tas de combinaison avec des Format,CData...
    Rien ! A chaque le test me répond vrai.

    A l'orgine je récupère une date d'aujourd'hui de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateAujourdHui = Application.Text(Now(), "dd/mm/yyyy")

    Puis je le compare avec des dates dans mes cellules. Ce sont des cellules au format date bien de la forme dd/mm/yyyy

    Avez vous des idées ?
    merci

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    Bonjour,

    Pour comparer des dates converties en texte il faut les mettre sous la forme "yyyy/mm/dd" ainsi l'ordre alphabétique correspond à l'ordre calendaire

    Mais en général il est plus simple de les comparer directement dans leur format date par exemple :

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Pourquoi directement sombrer dans l'excès et crier , au vue du titre du fil, à la fin du monde pour un problème si banal. Je dit banal non pas parce qu'il est simple, j'ai une sainte horreur de la manipulation de date, mais parce qu'il est plus fréquent sur ce forum je dirais même récurent.

    Commençons par te donner un peu de lecture afin de tefaciliter la suite de tes travaux concernant la manipulation des dates et qui sait t'amener à améliorer ceux déjà réalisé.
    Tout droit venu de la FAQ Access (il faut connaitre le truc) Dates et Heures


    Voici un petit extrait
    Pour calculer la différence entre deux dates, il faut utiliser la fonction DateDiff.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateDiff(interval, date1, date2)
    Où interval est une chaine de caractères correspondant à l'intervalle à prendre en compte.

    * y Année
    * m Mois
    * d Jour
    * h Heure
    * n Minute
    * s Seconde
    * q Trimestre
    * w Semaine


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("s", #1/1/1990#, #1/1/1992#)
    Je te propose donc de l'adapter ainsi sans trop prêter attention au différences de format entre nous autre modestes Froggies et nos chère Rosbeefs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim DateAujourdHui As Date
    DateAujourdHui = Date
    Dim DateAujourdHui As Date
    DateAujourdHui = Date
    If DateAujourdHui > Range("A1") Then
    MsgBox DateDiff("d", Range("A1"), DateAujourdHui)
    Else
    MsgBox DateDiff("d", DateAujourdHui, Range("A1"))
    End If
    Je te laisse vérifier mais cela fonctionne sans peine sur ma version d'excel paramétrais au format jj/mm/aaaa

    Edit : en relisant ta question je me rend compte que je me suis un peu emporté et que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateAujourdHui > Range("A1")
    semble suffire. Comme le dit justement nico84 étant donné que tu converties tes dates en chaine de caractère la comparaison risque d'être faussé

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Par défaut
    En fait j'ai ma date d'aujourd'hui qui est une chaine de caractère et les autres dates avec lesquelles je la compare sont quand à elles des "vraies" dates.

    Lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateAujourdHui < Cells(1,2).value
    ça ne marche pas.

    J'ai donc essayer de convertir DateAujourdHui avec un CDate puis un CDate précédé d'un Format... mais toujours sans résultat...

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Pourquoi utiliser qui te donne un texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateAujourdHui = Application.Text(Now(), "dd/mm/yyyy")
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DateAujourdHui As Date
    DateAujourdHui = Date
    Te donne une date

    Enfin voila une idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim DateAujourdHui As Date
    Dim DateAujourdHuiTexte As string
     
    DateAujourdHuiTexte="21/11/2009"
     
    DateAujourdHui =DateSerial(Year(split(DateAujourdHuiTexte,"/")(2)), Month(split(DateAujourdHuiTexte,"/")(1)),split(DateAujourdHuiTexte,"/")(0))
    DateAujourdHui < Cells(1,2).value

Discussions similaires

  1. problème de date
    Par baboune dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 10/06/2004, 10h52
  2. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  3. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  4. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22
  5. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 18h10

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