Compléments pour Microsoft Access

http://access.fr.free.fr/

Fonction fInStrRev (Equivalence)

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()".
 
Syntaxe 

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

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

ElémentsDescription
strCheckExpression de chaîne dans laquelle la recherche est effectuée.
strMatchExpression recherchée.
startFaculatif. 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.
compareFacultatif. 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 :

ConstanteValeurDescription
vbUseCompareOption-1Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare0Effectue une comparaison binaire.
vbTextCompare1Effectue une comparaison de texte.
vbDatabaseCompare2Micorosft 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 syntaxe 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