Fonction RegExp sous VBA.

Résolu/Fermé
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 30 août 2013 à 11:56
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 2 sept. 2013 à 08:29
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

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
30 août 2013 à 14:26
Cher Villette54,

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

A+
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
30 août 2013 à 14:30
Merci...
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 30/08/2013 à 14:46
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.
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 2/09/2013 à 08:36
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
30 août 2013 à 15:30
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

0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
2 sept. 2013 à 08:29
Bonjour Pikaju,

Je vais essayer d'utiliser ta solution.

Merci pour ton aide.
0