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é.

2 réponses

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Cher Villette54,

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

    A+
    0
    1. Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
       
      Merci...
      0
    2. Zoul67 Messages postés 2001 Statut Membre 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
    3. 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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. 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