bonjour a tous
j'ai cherché partout cru souvent trouvé mais non alors une fois n'est pas coutume je pose la question
comment coder la matrice du pattern a fin de récupérer la chaine souhaitée en fonction de deux texte quasi identique a une nuance pret
l'un avec "train" l'autre avec "car"
la matrice est celle ci: "toto +(\D*)train" ou "car" pour l'autre
je voudrais pouvoir coder "train" ou "car" par un crochet ou parentheze alternative qui fonctionnerait pour les 2
est ce possible ce que je veux récupérer ce qui est est en rouge dans les deux phrases
je précise que je ne peut pas utiliser les operateur \D* [a-z] car dans les vrai exemples de phrase(confidentielles)se sont la lettre "à" et le symbole"-"
alors je sais c'est tordu mais c'est moi
voila mes deux textes
texte = "la semaine prochaine toto part en colonie avec son ecole en car de nuit "
texte = "demain toto part au sport avec son ecole par le train de nuit "
voila les 2 subs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub test1() Dim texte As String texte = "toto part en colonie avec son ecole en car " ou = chainevalide(texte, "toto +(\D*)car")(0) MsgBox ou End Subvoila la fonction qui fonctionne tres bien utilisant l'object VBScript.RegExp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 sub test2() texte = "toto part au sport avec son ecole par le train" ou = chainevalide(texte, "toto +(\D*)train")(0) msgbox ou End Sub
allez ca fait une heure que je plombe dessus j'ai mal au crane ayez pitié
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Function chainevalide(txt As String, matrice) As Variant Dim Matches With CreateObject("VBScript.RegExp") .Global = True .Pattern = matrice .IgnoreCase = True Set Matches = .Execute(txt) ReDim tablo(Matches.Count): i = 0 For Each Match In Matches tablo(i) = Match.Value i = i + 1 Next End With chainevalide = tablo End Function![]()
Partager