Joyeux Pattern et bonne année

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

On peut déjà dire que mon souci est ici :

ptrn = "\[#" & "TRANSIT" & ".*" & "\]{1}$"

puisque

".*"

intégrera de fait mon caractère "]" ... comment l'exclure ici sans devoir faire un truc du style

"\w*\s*\d*[<>/,;.:-_]*"

... ?

Bonsoir à tous !

Avec M365, la fonction REGEX.REMPLACER semble retourner des résultats probants.

Exemple :

image

La formule utilise le modèle :

"\[#TRANSIT.*?\]

Peut être celui-ci pourra vous servir.

Hello JFL,

Merci pour la soluce, ca marche au poil un peu idiot de voir que çà ne tenait qu'à un "?"

Par contre je ne connais pas cette fonction et je n'ai "qu'"une version 2016

Bonsoir à tous de nouveau !

.....un peu idiot de voir que çà ne tenait qu'à un "?"

Par contre je ne connais pas cette fonction et je n'ai "qu'"une version 2016

Les expressions régulières sont amusantes..... Je tâtonne... je tâtonne avant que de trouver le modèle idoine.

Quant à la fonction REGEX.REMPLACER, une mise à jour produit s'impose.....(Excel 2016 tout de même.........)

Rechercher des sujets similaires à "joyeux pattern bonne annee"