Fonction RegExp sous VBA.

Résolu
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -  
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -
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é.
A voir également:

2 réponses

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
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   Statut Membre Dernière intervention   28
 
Merci...
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
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   Statut Membre Dernière intervention   28
 
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   Statut Modérateur Dernière intervention   2 761
 
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   Statut Membre Dernière intervention   28
 
Bonjour Pikaju,

Je vais essayer d'utiliser ta solution.

Merci pour ton aide.
0