Bonjour,

Je souhaite remplacer une chaine de caractères par une nouvelle chaine modifié, en utilisant les expressions rationnelles de VBA.

Voici un exemple de chaine d'origine:
1, 4, 6-7, 9-10, 13-17, 19, 23, 25

A la fin je souhaite obtenir:
1;4;[6-7];[9-10];[13-17];19;23;25

En gros la virgule + espace est remplacé par un point virgule.
Lorsqu'il y a un intervalle de chiffre, il doit être entouré par des [].

J'ai commencé à faire une ébauche:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub RegexChaine()
    Dim RegEx As RegExp
    Set RegEx = New RegExp
    With RegEx
        .IgnoreCase = True
        .Global = False
        .Pattern = "(.*)(, )(.*)"
    End With
    chaine$ = "1, 4, 6-7, 9-10, 13-17, 19, 23, 25"
    chaine$ = RegEx.Replace(chaine$, "$1")
    MsgBox (chaine$)
 
End Sub
Mais je bloque, je n'arrive pas à comprendre le fonctionnement avec le $1

Merci de m'aider.