Fonction InStrRev


Description  
Cette fonction permet de renvoyer la position d'une occurence d'une chaîne dans une autre à partir de la fin de la chaîne.
A partir d'Access 2000 il existe une fonction équivalente qui s'utilise de la même façon à savoir la fonction "InStrRev()".
 
Synthaxe  

Expression = fInStrRev(strCheck, strMatch[, start[, compare]])

La synthaxe de la fonction fInStrRev comprend les éléments suivants :

Eléments Description
strCheck Expression de chaîne dans laquelle la recherche est effectuée.
strMatch Expression recherchée.
start Faculatif. Expression numérique définissant la position de départ de chaque recherche. Si elle est omise ou si la valeur est supérieur à la longueur de la chaîne, la recherche commence à la dernière position de la chaîne.
compare Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Si elle est omise une comparaison binaire est effectuée. Reportez-vous à la section Valeurs.

Section Valeurs :
L'argument compare prend les valeurs suivantes :

Constante Valeur Description
vbUseCompareOption -1 Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare 0 Effectue une comparaison binaire.
vbTextCompare 1 Effectue une comparaison de texte.
vbDatabaseCompare 2 Micorosft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.
 
Exemple  

Cet exemple permet de retourner un msgBox indiquant l'expression dans laquelle la recherche est effectuée, l'expression que l'on cherche et le résultat obtenu, c'est à dire la position du dernier "-" dans la chaîne "toto-tata-titi-tete".

Public Function fInStrRev_EXE()

Dim strExpression As String
Dim strMatch As String
Dim strMsgBox As String

strExpression = "toto-tata-titi-tete"
strMatch = "-"

strMsgBox = "Dans l'expression : """ & strExpression & """" & vbCrLf & vbCrLf
strMsgBox = strMsgBox & "l'expression : """ & strMatch & """" & vbCrLf & vbCrLf
strMsgBox = strMsgBox & "se trouve ŕ la position : "
strMsgBox = strMsgBox & fInStrRev(strExpression, strMatch)

MsgBox strMsgBox

End Function

Cet exemple retournera le msgBox suivant :

Image représentant le msgBox obtenu avec l'exemple de la fonction

Remarque :
L'argument start bien que optionel peut-être utile si par exemple ou souhaite retrouver la position de la 2ème expression recherchée, on pourra imbriquer la fonction fInStrRev de la manière suivante :

fInStrRev(strExpression, strMatch, fInStrRev(strExpression, strMatch))

Si l'on reprend les valeurs de l'exemple supérieur, cette synthaxe retournera 10.

 

 
Code de la fonction  


Public Function fInStrRev(strCheck As String, strMatch As String, _
    Optional start As Long, _
    Optional compare As VbCompareMethod = vbBinaryCompare) As Long

Dim lngFind As Long
Dim lngStart As Long

lngStart = start
If lngStart > Len(strCheck) Or lngStart <= 0 Then _
    lngStart = Len(strCheck) + 1
lngFind = InStr(1, strCheck, strMatch, compare)
Do While lngFind > 0 And lngFind < lngStart
    fInStrRev = lngFind
    lngFind = InStr(lngFind + 1, strCheck, strMatch, compare)
Loop

End Function

 

 

Retour haut de page

Auteur : Jessy SEMPERE