Visual Basic for Applications:
Utilisation des expressions régulières

Comment faire :

Pour utiliser les expressions régulières dans VBA, vous devez d’abord activer la bibliothèque Microsoft VBScript Regular Expressions. Dans l’éditeur VBA, allez dans Outils -> Références, puis cochez Microsoft VBScript Regular Expressions 5.5.

Voici un exemple basique pour trouver si un motif existe dans une chaîne :

Sub FindPattern()
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")

    With regex
        .Global = True
        .IgnoreCase = True
        .Pattern = "\bis\b"  ' Cherche le mot "is"
    End With
    
    Dim testString As String
    testString = "This is a test string."
    
    If regex.Test(testString) Then
        MsgBox "Motif trouvé."
    Else
        MsgBox "Motif non trouvé."
    End If
End Sub

Pour remplacer un motif dans une chaîne :

Sub ReplacePattern()
    Dim regex As Object, replacedString As String
    Set regex = CreateObject("VBScript.RegExp")
    
    With regex
        .Global = True
        .IgnoreCase = False
        .Pattern = "\s"  ' Correspond à tout caractère d'espace blanc
    End With
    
    replacedString = regex.Replace("This is a test string.", "_")
    MsgBox replacedString  ' Sortie : "This_is_a_test_string."
End Sub

Approfondissement

L’inclusion des expressions régulières dans les langages de programmation remonte souvent aux outils Unix des années 1970. VBA a intégré les regex grâce à la bibliothèque VBScript Regular Expressions, soulignant son importance dans les tâches de traitement de texte même dans des applications non typiquement associées à une manipulation de texte lourde comme Excel ou Access.

Malgré leur puissance, les regex dans VBA peuvent parfois être moins intuitives ou performantes par rapport à des implémentations plus modernes dans des langages tels que Python ou JavaScript. Par exemple, le module re de Python offre un support étendu pour les groupes nommés et des fonctionnalités de correspondance de motifs plus sophistiquées, fournissant une approche plus propre et potentiellement plus lisible. Cependant, lorsqu’on travaille dans l’écosystème VBA, les expressions régulières restent un outil inestimable pour les tâches nécessitant une correspondance de motifs ou une manipulation de texte. Le compromis en termes d’efficacité est souvent négligeable au vu de la commodité et des capacités que les regex apportent à la table lorsqu’il s’agit de gérer des chaînes dans les applications Office.