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 :

Expressions rationnelles pour des dates (point de point) [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut Expressions rationnelles pour des dates (point de point)
    Bonjour,

    J'ai beau arpenter les tutoriels et forums, je ne vois pas de solution à mon problème qui pourtant semble relativement simple.

    Il s'agit de repérer, grâce à une expression régulière, les dates aux formats suivants :
    07/08/1981 - 7/08/1981 - 07/8/1981 - 7/8/1981
    07-08-1981 - 7-08-1981 - 07-8-1981 - 7-8-1981
    07.08.1981 - 7.08.1981 - 07.8.1981 - 7.8.1981

    J'ai tenté moult variations mais mon code ne détecte pas celles avec le séparateur "." alors que pour les autres dates tout va bien.

    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
    ...
    set reg = New VBScript_Regexp_55.RegExp
    reg.Multiline = False
    reg.ignorecase = True
    reg.Global = False
     
    reg.pattern = "\d{1,2}(\.|/|-)\d{2}(\.|/|-)\d{4}"
    set Matches = reg.Execute(DateSource)
     
    For Each Match In Matches
         Debug.Print "source >>", Match.Value
         For i = 0 To Match.SubMatches.Count - 1
              Debug.Print "[$" & i + 1 & "]", Match.SubMatches(i)
         Next i
    Next Match
    ...
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour Alba1981,

    Pour le traitement que tu fais, je ne pense pas qu'une expression régulière soit réellement utile.
    3 replace, 1 split et l'utilisation de val pourrait faire l'affaire.


    Sinon j'utiliserais plutôt le pattern suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \d{1,2}(\.|\/|-)\d{1,2}(\.|\/|-)\d{4}

  3. #3
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Bonjour,

    pour les propriétés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    reg.MultiLine = True
    reg.Global = True
    pour le motif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \d{1,2}(\.|/|-)\d{1,2}(\.|/|-)\d{4}
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (\d{1,2}(\.|/|-)){2}\d{4}
    à adapter en fonction des sous-correspondances que tu veux ramener.

    NB : la partie peut être remplacée par A+

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

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

    Suivant vos conseils, j'ai modifié le pattern ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reg.pattern = "(\d{1,2}[\.-/]){2}\d{4}"
    Je ne comprends pas pourquoi mais ça fonctionne !

    Un grand merci à vous deux.

    Alba

  5. #5
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Je ne comprends pas pourquoi mais ça fonctionne !
    Le plus simple est de poser des questions sur ce que tu ne comprends pas.
    A+

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

Discussions similaires

  1. Equivalent à IN pour des données de type point?
    Par Mazike dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 26/09/2010, 10h28
  2. Cherche Expression rationnelle pour isoler une chaîne
    Par ritual dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 18/08/2008, 14h31
  3. [RegEx] Motif pour des dates
    Par boo64 dans le forum Langage
    Réponses: 4
    Dernier message: 11/03/2008, 11h52
  4. Select pour des dates
    Par DrE44 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2007, 16h19
  5. Conseil pour des dates
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/05/2007, 19h24

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