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 :

validité d'une date


Sujet :

Macros et VBA Excel

  1. #21
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Par défaut
    excuse j'ai du faire un doublon

    bon merci pour ton explication sur la différence d'interprétation entre excel et vba, c'est ça qui me met la tête à l'envers

    alors j'ai essayé ta méthode et voilà les conclusions

    si je mets 30/11/09 dans cells(1,1) excel force à 30/11/2009 donc il reconnait bien une date valide alignement à droite

    si je mets 31/11/09 excel me laisse 31/11/09, alignement à gauche, donc il a un comportement différent

    si je teste avec Isdate dans les deux cas ça renvoie vrai
    isnumber répond faux dans les deux cas


    si je force le format à jj/mm/aaaa alors
    excel ne hurle pas mais laise la cellule cells(2,1) à gauche et ne change rien
    je force la cellule cells(2,1) à 31/11/2009

    alors Isdate réagit correctement: donne vrai pour cells(1,1)
    et faux pour cells(2,1)
    isnumber reste toujours à faux

    donc je reste toujours dépendant du format saisi par l'opérateur et le pb reste indeterminé

  2. #22
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    As-tu essayé l'outil de validation d'Excel? Il permet de forcer la saisie d'une date valide dans une cellule, et sera beaucoup plus fiable qu'une technique par VBA...

    Et, FORCEMENT que cela ne fonctionne pas avec 31/11/09, il n'y a que 30 jours en novembre!!!! (on te l'a déjà fait remarquer plus haut dans la discussion...)

    Si tu veux faire des tests, fais-les au moins avec des valeurs correctes!

    Et c'est pour cela que je pense que tu t'en sortiras avec l'outil de validation... mais comme tu t'entêtes à ne pas vouloir l'essayer...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #23
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Par défaut
    heu il fait des comparatifs avec le 30/11/09 et le 31/11/09 pour vérifier avec une date valide et une date invalide le résultat de ce qu'il teste non?

  4. #24
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    C'est bien pour cela que je propose de passer par la validation de la cellule. Ainsi, il sera impossible de saisir 31/11/09 et il n'y aura plus besoin de recourir à du VBA pour tester si la date est valide.

    Mais quand il dit
    si je teste avec Isdate dans les deux cas ça renvoie vrai
    Ce n'est pas possible que cela renvoie VRAI avec 31/11/09 => erreurs de test, et plus personne ne sait finalement ce qui a été testé ni comment cela a été testé.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #25
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Par défaut
    ouh la la
    ne nous fachons pas
    effectivement ce que je cherche c'est bien que lorsque l'utilisateur saissise une date idiote comme 31/11/09, je puisse offrir le moyen de le corriger
    c'est la source même de cette discussion

    fauconnier me donne une bonne indication :
    faire valider la date par excel autrement que par VBA
    trés bien mais comment fait-on ?

  6. #26
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Suis pas fâché...

    Via Données/Validation (XL < 2007), ou onglet Données/Outils de données/Validation de données (XL 2007)



    Avec possibilité de personnaliser le message de saisie et les niveaux d'alerte en cas d'erreur de saisie.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #27
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Par défaut
    eh ben voilà

    donc ça me va, j'ai essayé sur mon fichier et effectivement ça hurle quand on met une date de blonde

    merci Pierre

    en tout cas il me reste le pb irrésolu d'imposer le calcul de date en français,
    car j' le pb par ailleur à chaque fois que je veux faire des calculs de dates
    mais ce sera l'objet d'autres discussion
    je retiens surtout que excel et vba ne réagissent pas pareil sur les dates
    et ça c'est dur

    Patnel

  8. #28
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    D'un autre côté, si on déclare ses variables typées comme on le dit toujours...

    ce genre de code fournit tout de suite une indication..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
     
    Sub toto()
    Dim date_ko As Date
    date_ko = Cells(2, 1).Value ' contient 31/11/2010 renvoie une erreur 13
    'etc...
    End Sub
    cordialement,

    Didier

  9. #29
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour Ormonth,
    Tout à fait d'accord avec toi pour la déclaration
    Mais si on saisi 31/11/10 en A2 le code ne renvoi pas d'erreur, date_ko renvoi 10/11/1931, c'est ça le principal souci.
    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [VB.NET] Comment tester la validité d'une date ?
    Par Zefree dans le forum ASP.NET
    Réponses: 5
    Dernier message: 15/12/2012, 15h49
  2. Validité d'une date.
    Par ishdiane dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2006, 14h03
  3. vérifier la validité d'une date
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 16h11
  4. [Dates] date() validité d'une date
    Par BigBarbare dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2006, 16h45
  5. Réponses: 15
    Dernier message: 03/11/2005, 15h43

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