=SI(B5="pp";"AA : "&TEXTE(GAUCHE(C5;6);"000000000")&"-"&STXT(C5;7;3)&"."&DROITE(C5;2);SI(B5="PM";SI(NBCAR(C5)=9;"BCE : 0"&GAUCHE(C5;3)&"."&STXT(C5;4;3)&"."&DROITE(C5;3);"AVT : "&GAUCHE(C5;4)&"."&STXT(C5;5;3)&"."&DROITE(C5;3));""))
Function FrmRegex(str1, str2) As String
Dim regex As Object
Dim output
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "(\d{6})(\d{2})(\d{3})"
output = regex.Replace(str1, "$1-$2.$3")
regex.Pattern = ".*(\d{7})$"
output = "AA : " + output + " BB : " + regex.Replace(str2, "$1")
Debug.Print output
FrmRegex = output
End Function
Sub TestFrmRegex()
Debug.Print FrmRegex("40625017527", "1032946594-9356500")
End Sub
AA : 406250-17.527 BB : 9356500
Un tout grand merci Jp mais là cela dépasse mes petites compétences. Je n'y comprends rien....Hello,
sinon c'est faisable avec une fonction personnalisée qui utilise les expressions régulières :
VB:Function FrmRegex(str1, str2) As String Dim regex As Object Dim output Set regex = CreateObject("VBScript.RegExp") regex.Pattern = "(\d{6})(\d{2})(\d{3})" output = regex.Replace(str1, "$1-$2.$3") regex.Pattern = ".*(\d{7})$" output = "AA : " + output + " BB : " + regex.Replace(str2, "$1") Debug.Print output FrmRegex = output End Function Sub TestFrmRegex() Debug.Print FrmRegex("40625017527", "1032946594-9356500") End Sub
Je ne sais pas si on peut faire cela en formule avec les Regex de Excel 365 (que je n'ai pas)
Ami calmant, J.P
Function FrmRegex(str1, str2) As String
Dim regex As Object
Dim output
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "(\d{6})(\d{2})(\d{3})"
output = regex.Replace(Format(str1, "00000000000"), "$1-$2.$3")
regex.Pattern = ".*(\d{7})$"
output = "AA : " + output + " BB : " + regex.Replace(str2, "$1")
FrmRegex = output
End Function
Sub TestFrmRegex()
Debug.Print FrmRegex("625017527", "1032946594-9356500")
End Sub
=SI(B3="pp";"AA:"&TEXTE(DROITE("000000" & C3;11);"00000-000.00")&" BB : " & DROITE(C4;NBCAR(C4)-TROUVE("-";C4;1)))