Fonction RegExp sous VBA. [Résolu/Fermé]

Signaler
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
-
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
-
Bonjour,

J'ai lu plusieurs tuto, mais je ne comprends absolument comment marche la fonction RegExp sur VBA.

Je voudrais m'en servir pour conditionner la saisie dans une textbox sous VBA.
Ci-joint un exemple d'un morceau de code que l'on m'a fourni mais qui ne fonctionne pas.

Set RegExDate = New RegExp
    With RegExDate
        .IgnoreCase = True
        .Global = False 'True matches all occurances, False matches the first occurance
        .Pattern = "[0-9]{2}/[0-9]{2}/[0-9]{4}"
    End With


En espérant pouvoir être aidé.

2 réponses

Messages postés
1941
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
23 août 2020
144
Cher Villette54,

Ton problème est bien de tester si la saisie est une date ? Jette un oeil à la fonction IsDate...

A+
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
22
Merci...
Messages postés
1941
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
23 août 2020
144
Sinon, tu peux mettre un calendrier dans le UserForm, mais de mémoire ceux que j'utilisais étaient dépendants de la version d'Excel...et de l'activation de références.
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
22
Bonjour, humm je ne pense pas être capable de faire ça.
Je vais plutôt essayer de conditionner comme le propose pikaju.
En tout cas merci pour l'info.
Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 février 2021
2 573
Bonjour,

Une autre solution, bâtie sur ce concept de silkyroad:

Private Sub TextBox1_Change()
    Dim Valeur As Byte
    TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
End Sub


'Ensuite pour vérifier que c'est bien une date qui a été saisie
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsDate(TextBox1) Then
        MsgBox "Format incorrect"
        TextBox1 = ""
        Cancel = True 'laisse le focus au textbox
    End If
End Sub

Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
22
Bonjour Pikaju,

Je vais essayer d'utiliser ta solution.

Merci pour ton aide.