Bonsoir et de bonnes fêtes à tous
(avant de contourner mon souci via les fonctions Instr et compagnie,) Je me suis lancé dans une méthode Regex qui me donne du fil à retordre :
Dans une chaine de caractère je souhaite localiser (et remplacer par du vide) une sous-chaine composée comme suit
[#TRANSIT*]
* l'étoile remplace une chaine de caractère (alphanumérique ; espaces ; caractères spéciaux sauf les crochets)
L'ensemble de la sous-chaine à traiter est donc délimitée :
→ en début par : "[#" & "TRANSIT"
→ en fin par : "]"
Voici des exemples de chaine :
exemple 1 :
[#TRANSIT<29/12/2024>(DT#000045687)(BL#2356451458;26589,456f)][anoRECP<27/12/2024>]
devra donner
[anoRECP<27/12/2024>]
exemple 2 :
[TRANSIT<01/09/2023>][anoRECP<27/12/2024>][#TRANSIT<01/09/2023>][RECP<27/12/2024>]
devra donner
[TRANSIT<01/09/2023>][anoRECP<27/12/2024>][RECP<27/12/2024>]
Voici un bout de code :
Sub camarchepas()
Dim ptrn As String, rpl As String, temp As String
Dim Rgex As Object
ptrn = "\[#" & "TRANSIT" & ".*" & "\]{1}$"
rpl = ""
temp = "[#TRANSIT<29/12/2024>(DT#000045687)(BL#2356451458;26589,456f)][anoRECP<27/12/2024>]"
Set Rgex = CreateObject("vbscript.regexp")
With Rgex
.Pattern = ptrn
.Global = False
temp = .Replace(temp, rpl)
End With
Set Rgex = Nothing
End Sub
Merci d'avance car je sais que quelqu'un me viendra en aide, comme toujours ici
Bonsoir