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 :

VBA Regex sur date et heure pour contrôler le format [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut VBA Regex sur date et heure pour contrôler le format
    Bonjour,

    Je dois récupérer depuis un fichier rempli manuellement des infos de date et heure.

    Afin de contrôler la validité ainsi que le format, j'ai construit ces 2 expressions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (\b[1-9]|0[1-9]|[12]\d|3[01]\b)([\/|\.|-])(\b0[1-9]|1[012]\b|\b[1-9]\b)([\/|\.|-])(\b([0-9]{2}(([0-9]{2}))?)\b)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (\b[1-9]\b|\b0[1-9]\b|\b1[0-9]\b|\b2[0-3]\b)(\b[:|.|-||H]\b)(\b[0-5]\d\b)
    La première contrôle le format et la validité d'un date et la seconde d'une heure en acceptant les chiffrent unique où c'est intelligible (cad 1/1/17 ou 1:17 mais pas 1/1/1

    un simple ((\d{2})([\/|\.|-])){2}(\d{4}) pour la date et (\d{2})([:|.|-||H]\b)(\d{2}) n'étant pas suffisamment restrictif.

    Ces expressions valident :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    date          heure
    11.10-2016    10:00
    1/10/2016     1:00
    1/1/2016      20:57
    11/1/2016   
    11/10/16    
    1/10/16     
    1/1/16      
    11/1/16
    Mais pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    date          heure
    32/10/2016    25:30
    11/13/2016    20:60
    11/10/201     1:1
    11/10/20165
    Je voulais savoir s'il n'y aurait pas plus simple comme expression ou même comme méthode.
    J'ai également un soucis avec l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (\b([0-9]{2}(([0-9]{2}))?)\b)
    Si l'on considère que l'année sur 4 chiffres s'écrit ssaa et sur 2 chiffres aa mon expression récupère bien ssaa ou aa mais également ss
    Comment faire pour ne récupérer que de 17 à 99 ou de 2017 à 9999 mais pas 20 si c'est à droite des [\/|\.|-] par exemple ?

    Merci.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pourquoi... ?

    Dans Excel, les dates sont des nombres et uniquement des nombres.

    Excel pour Windows: 1 = 1er janvier 1900 par défaut
    Excel pour Mac: 1 = 1er janvier 1904

    Les dates suivantes augmentent de 1 pour chaque journée d'écart.

    Excel a ses propres algorithmes pour interpréter une date en fonction des paramètres régionaux, soit d'Excel, soit de Windows

    http://didier-gonard.developpez.com/...-excel-et-vba/

    http://silkyroad.developpez.com/excel/dateheure/

    http://mhubiche.developpez.com/vba/f...ions/datetime/

    https://excel.developpez.com/faq/?page=Dates

  3. #3
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Pourquoi... ?
    Très bonne question, j'ai omis ce léger détail ...

    Les infos de date et heure seront récupérées depuis un fichier rempli manuellement
    D'où le besoin de contrôle.

    C'est vrai que sinon ça n'a a peu près aucun intérêt je suis bien d'accord


    Je modifie mon post d'origine

  4. #4
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut
    Je l'ai marqué résolu, parce que l'expression rationnelle remplie correctement sa fonction de recherche et validation.

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    sans expression rationnelle, le VBA disposant de la fonction IsDate

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

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

Discussions similaires

  1. [XL-2010] Transposer somme.si.ens avec critère sur date et heures en vba ?
    Par novice06 dans le forum Excel
    Réponses: 25
    Dernier message: 30/04/2015, 13h10
  2. Comment programmer un rappel sur date et heure
    Par pierrot67 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/05/2007, 18h45
  3. [REQ] Requête sur date et heure
    Par benazerty dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 26/06/2006, 13h34
  4. [sql server] requête sur dates et heures (format du résultat
    Par isachat666 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h48
  5. [DEBUTANT]Comparaison sur date et heure
    Par tripper.dim dans le forum Oracle
    Réponses: 15
    Dernier message: 15/11/2005, 18h25

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