VBA : Recherche d’une sous-chaîne particulière par la fin

Après avoir vu l’extraction d’un token particulier depuis le début de la chaîne de caractère, je vous présente sa version depuis la fin de la chaîne.

Objectif
Extraire un token par son numéro d’apparition dans une chaîne de caractère mais en partant de la fin de la chaîne.
Par exemple, de la chaîne ‘ab-cd-ef-gh’ je souhaite extraire ‘ef’ qui est l’avant-dernier token (ou sous-chaîne délimitée) depuis le dernier caractère séparateur ‘-‘, ou bien le dernier token (‘gh’), le 3ème (‘cd’),…

Comment faire simple ?
Pour ne pas réinventer la roue , je me suis appuyé sur notre fonction TokenBySplit() et la fonction standard VBA StrReverse() qui inverse la chaîne de caractère passée en argument (‘ab’ deviendra ‘ba’).

La fonction

Public Function TokenReverse(ByVal Texte As String, ByVal Separateur As String, ByVal Numero As Long, Optional ByVal TypeComparaison As VbCompareMethod = vbBinaryCompare) As String
'Retourne le token spécifié par son numéro à partir de la fin de la chaîne de caractère
'Auteur : Philben - v1.0
'Exemple : TokenReverse("ab-cd-ef-gh","-",2) -> ef (2ème token en partant de la fin)
   TokenReverse = StrReverse(TokenBySplit(StrReverse(Texte), Separateur, Numero, TypeComparaison))
End Function

 
Exemples

?TokenReverse("ab-cd-ef-gh","-",1) 'gh
?TokenReverse("ab-cd-ef-gh","-",2) 'ef
?TokenReverse("ab-cd-ef-gh","-",3) 'cd
?TokenReverse("ab-cd-ef-gh","-",4) 'ab
?TokenReverse("ab-cd-ef-gh","-",5) 'Nada !

 

@+

Philippe

Laisser un commentaire