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 :

Tester la date [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Points : 182
    Points
    182
    Par défaut Tester la date
    Bonjour à l'équipe,

    J'ai beau chercher sur internet une solution pour vérifier si la date saisie dans une cellule au format "Date (*14/03/2001)", je ne trouve pas la fonction idéale. (La saisie de la date doit être sous la forme "JJ//MM/AAAA").

    Actuellement, j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function TestDate(DateEntree As Variant) As Boolean
     
    TestDate = True
     
    If Not IsDate(DateEntree) Then
        MsgBox "La date n'est pas correcete"
        TestDate = False
     
        Exit Function
    End If
     
    End Function
    Je fais appel à cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If TestDate(Worksheets("CLInit").Range("D7").Value) = False Then
        Range("D7").Select
        Exit Sub
    End If
    et si ma cellule "D7" contient "1/15/2014", ma fonction est = "True". alors que 15 mois n'est pas juste?

    Auriez-vous une solution?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(1, 1).NumberFormat = "m/d/yyyy" Then MsgBox "Oui"
    http://www.developpez.net/forums/d14...x/#post8051606

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Points : 182
    Points
    182
    Par défaut
    Bonjour rdurupt,

    Toujours fidèle au poste...

    Merci pour ta réponse, je suis allé voir la discussion renseignée mais je n'ai pas obtenu les info nécessaires si ce n'est qu'il faut utiliser le format date international....

    Lorsque je mets ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(7, 4).NumberFormat = "m/d/yyyy" Then MsgBox ("Oui")
    le msg "Oui" s'affiche, mais j'aimerais avoir le format "dd/mm/yyyy" ou "d/m/yyyy"
    j'ai bien vérifié le format de la cellule, il est bien "Date (*14/03/2001)". Si je mets le contenu dans une variable de type Date, cette variable contient la date : 15/1/2014 alors que la date entrée au départ dans la cellule "D7" est "1/15/2014".
    Faut-il passer par une string et décomposer le contenu en vérifiant le jour en fonction du mois (et gestion des années bissextiles)....?

    Merci pour ton d'avance pour ton aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Debug.Print DateAmFr("1/15/2014")
    End Sub
     
    Function DateAmFr(D) As String
    Dim T
    DateAmFr = D
    If InStr(1, DateAmFr, "/") = 0 Then Exit Function
    T = Split(DateAmFr, "/")
    DateAmFr = T(2) & "-" & Format(T(0), "00") & "-" & Format(T(1), "00")
    End Function

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    C'est vrai que ce comportement est bizarre.
    Tu peux essayer de pallier le pb avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set oRng = ThisWorkbook.Worksheets("CLInit").Range("D7")
     
    If IsDate(oRng.Value) Then
        oRng.Value = Format(oRng.Value, "dd/mm/yyyy")
    Else
        oRng.Select
        MsgBox "La date n'est pas correcte"
    End If
    Cordialement,

    Pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Points : 182
    Points
    182
    Par défaut
    Merci rdurupt,

    Je vais me baser sur cette fonction pour tester la saisie de la date.

    Bonne journée


    CELUI QUI AJOUTE DE NOUVELLES CONNAISSANCES AUX ANCIENNES EST LE VERITABLE ENSEIGNANT

    CONFUCIUS

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Points : 182
    Points
    182
    Par défaut
    Bonjour pgz,

    Merci pour ton code mais si je mets le "3/15/2014" dans ma cellule "D7",
    lorsqu'on arrive à ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRng.Value = Format(oRng.Value, "dd/mm/yyyy")
    La date dans la cellule est changée en "15/3/2014", il y a inversion mois et jours,
    Si je rentre "25/12/2014", la date reste bien "25/12/2014" après le code (pas d'inversion)????
    Si je mets "31/15/2014", j'ai le message d'erreur (Erreur 13: incompatibilité de type)
    à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateNaissance = Worksheets("CLInit").Cells(7, 4).Value
    ou DateNaissance est déclarée "dim ... as date"

    Voilà, je vais en resté là, je vais décomposer la date et faire une fonction plus complète.

    Merci quand même pour ton aide.

  8. #8
    Invité
    Invité(e)
    Par défaut
    si c'est ton code que écrit dans la cellule toujours au format international!
    c'est invariable toujours, toujours,toujours...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.NumberFormat = "General"
    ActiveCell = Format("15/03/2014", "yyyy-mm-dd")

  9. #9
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il y a un KB la-dessus. Avoir si ça résoud le problème. http://support.microsoft.com/kb/241728/fr

    EDIT:
    Oups, c'est pas le même finalement.

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

Discussions similaires

  1. tester si date valide ou pas
    Par jadey dans le forum SQL
    Réponses: 14
    Dernier message: 21/08/2013, 12h09
  2. Réponses: 3
    Dernier message: 02/05/2008, 11h05
  3. Tester la date de modification d'un répertoire ?
    Par byloute dans le forum Administration système
    Réponses: 1
    Dernier message: 17/03/2008, 12h16
  4. [DCL/VAX] Tester une date
    Par ricoree78 dans le forum Autres langages
    Réponses: 5
    Dernier message: 08/06/2007, 17h48
  5. [Dates] tester une date
    Par stomerfull dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2006, 17h12

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