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 :

Problème de comparaison de date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Par défaut Problème de comparaison de date
    bonjour,

    dans un programme, je compare la date du jour avec une date dans une cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      If Cells(t, 17) > DateMaintenant Then
            Cells(t, 22) = "NOK"
        End If
    la date de la cellule est "01/02/2014" et la date de ce jour est "15/01/2014".
    Or, le programme ne prend pas en compte le "NOK" en sachant que dans la même colonne il prend bien en compte d'autres dates comme le 15/02/2014 ou encore 30/01/2014
    J'ai vérifié les formats des cellules c'est ok

    Avez vous une idée ?

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If Cells(1, 17) > Date Then
            Cells(t, 22) = "NOK"
        End If
    avec l'heure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If Cells(1, 17) > now Then
            Cells(t, 22) = "NOK"
        End If

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Par défaut
    bonsoir,

    ma question était pourquoi cela ne fonctionne pas
    je pense qu'il y a erreur sur la réponse

    désolé

  4. #4
    Invité
    Invité(e)
    Par défaut
    vue que DateMaintenant n'est pas une instruction VBA, je ne voie pas comment il serait possible d'affecter "NOK" à une cellule. à mois que tu précises comment est défini DateMaintenant et quand tu lui fourni une date valide!

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonsoir à vous deux,
    Grimgrim, indépendamment des formats les dates sont des nombres fractionnaires formatées en dates lisibles.

    Le problème est comment la conversion se fait ?

    Une date du genre "30/1/2014" c'est forcément un format européen puisque que 12 mois maxi par an. Mais la date "01/02/2013" peut être interprétée comme le deux janvier 2014 en format américain.

    Quel est le format de la variable "DateMaintenant" ?

    Rien de tel que de comparer des nombres après conversion avec "Dateserial".

    ESVBA

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut

    la date de la cellule est "01/02/2014" et la date de ce jour est "15/01/2014".
    Or, le programme ne prend pas en compte le "NOK" en sachant que dans la même colonne il prend bien en compte d'autres dates comme le 15/02/2014 ou encore 30/01/2014
    J'ai vérifié les formats des cellules c'est ok
    @grimgrim

    Vérifier les formats des cellules ne renseigne pas sur le type de la valeur dans la cellule. Il faut vérifier le Typename de la valeur. Le format affecte l'affichage et non la valeur.

    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
    18
    19
    20
    21
    Sub tt()
     
    Cells(1, 1) = "01/02/2014"
    Cells(2, 1) = "15/1/2014"
    Cells(3, 1) = "30/01/2014"
     
    'Cells(1, 1) = CDate("01/02/2014")
    'Cells(2, 1) = CDate("15/01/2014")
    'Cells(3, 1) = CDate("30/01/2014")
     
    For i = 1 To 3
     Debug.Print TypeName(Cells(i, 1).Value), Cells(i, 1).Value, Date
    If Cells(i, 1) > Date Then
            Cells(i, 3) = "NOK"
           Else
            Cells(i, 3) = "OK"
        End If
     
    Next
     
    End Sub

    Cordialement

    Docmarti

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

Discussions similaires

  1. Problème de comparaison de date
    Par trigone dans le forum Langage
    Réponses: 3
    Dernier message: 25/06/2008, 08h44
  2. problème de comparaison de date (si de différentes années)
    Par jamesleouf dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 23/05/2008, 11h20
  3. Problème sur comparaison de date
    Par Nixar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/12/2007, 09h19
  4. Problème de comparaison de dates
    Par griese dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/07/2006, 16h35
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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