Bonjour à toutes et à tous
une petite fonction ...
VB:
Function ExtrairePartie(valeur As Variant) As String
Dim txt As String
txt = valeur
ExtrairePartie = ""
nbSlash = Len(txt) - Len(Replace(txt, "/", ""))
nbMoins = Len(txt) - Len(Replace(txt, "-", ""))
If nbSlash <> 3 Or nbMoins <> 7 Then Exit Function
ExtrairePartie = Split(Split(WorksheetFunction.Substitute(txt, "-", "¤", 5), "/")(3), "¤")(0)
End Function
re
Perso je pense que @mapomme a donné une solution précise
et me semble t il la plus économique et simple a comprendre
alors oui si vous voulez transformons en fonction mais pas la peine de faire de l'UAG
VB:
Function PartOfchain(v, FirstChar$, charplit$, IndexTableChar)
PartOfchain = Mid(Left(v, InStr(Replace(v, charplit, "^", , IndexTableChar), charplit) - 1), InStrRev(v, FirstChar) + 1)
End Function
la formule =PartOfchain(A1;"/";"-";4) pas la peine d'en rajouter les argument sont suffisamment explicites
comme ca on a pas besoins de savoirs combien mesure les chaines
entres les charsplit (en l'occurrence ici les "-")
Sub Capture_JP()
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.pattern = "/(\w+-\w+-\w+-\w+-\w+)-" '
On Error GoTo Erreur
Set matches = regex.Execute([A1])
Debug.Print matches(0).submatches(0)
Exit Sub
Erreur:
Debug.Print "Rien"
End Sub
Le motif (pattern) permet de "capturer" ce qui est entre parenthèses sachant que \w+ signifie 1 ou plus caractères alphanumériques
re @jurassic pork Attention sur certaine version excel le reg expand est très stricte Set matches = regex.Execute(Cstr([A1].value))
chez moi par exemple 2013 sans ça ne fonctionne pas sans le stricte type string
bonsoir @AtTheOne
tu es loin d'être ignorant
UAG =usine à gaz ou si tu préfère une lionelyte aigue
plus sérieusement je dis usine à gaz (sans méchanceté) par ce que 3 split (me semble til)
ca fait beaucoup pour une petite chaine
je suis d'accords avec toi sur le besoins de gestion d'erreur
perso je ne l'ai pas fait tout simplement par ce que là encore on peut laisser excel faire en englobant la formule dans un SIERREUR(.......)
peut être effectivement un on error resume next tout cours au cas ou
sinon après tout les chemins mènent à Rome tout dépend des basket que l'on porte
les ampoules ça fait mal