OVH Cloud OVH Cloud

Fonction InStrRev

10 réponses
Avatar
BibiMtl
Bonjour,=20

j'aurais besoin d'avoir la programation pour faire un=20
module pour recree la fonction InStrRev, comme vous le=20
savez cette fonction n'existe pas dans toutes les version=20
de offcice et comme ma BDD est pour etre utiliser sur=20
plussieur ordinateur je doit la recreer

j'ai d=E9ja fais des rechercher , mais ce que j'ai trouv=E9 :

Public Function MonInStrRev( ... ) As Long
MonInStrRev=3DInStrRev(... , compare:=3DvbTextCompare)
End Function


vba ne la prend pas, il me met toujours des lignes en rouge
( et comme je connais rien en vba) , qq'un peut-il me=20
corriger ce module, ou me donne un autre code qui fera la=20
meme chose.. merci d'avance!

10 réponses

Avatar
Gaël Schmitt [MS]
Bonjour,

Je ne comprends pas bien ton problème.
InStrRev existe pourtant dans toutes les versions d'Access ?
Cette fonction provient de Visual Basic For Application (VBA).

Gael.
"BibiMtl" a écrit dans le message de
news:24b401c3e100$f095e1f0$
Bonjour,

j'aurais besoin d'avoir la programation pour faire un
module pour recree la fonction InStrRev, comme vous le
savez cette fonction n'existe pas dans toutes les version
de offcice et comme ma BDD est pour etre utiliser sur
plussieur ordinateur je doit la recreer

j'ai déja fais des rechercher , mais ce que j'ai trouvé :

Public Function MonInStrRev( ... ) As Long
MonInStrRev=InStrRev(... , compare:=vbTextCompare)
End Function


vba ne la prend pas, il me met toujours des lignes en rouge
( et comme je connais rien en vba) , qq'un peut-il me
corriger ce module, ou me donne un autre code qui fera la
meme chose.. merci d'avance!
Avatar
3stone
Salut,

"BibiMtl"
j'aurais besoin d'avoir la programation pour faire un
module pour recree la fonction InStrRev, comme vous le
savez cette fonction n'existe pas dans toutes les version
de offcice et comme ma BDD est pour etre utiliser sur
plussieur ordinateur je doit la recreer



Voilà une version pondue par l'ami moilneu et qui roule partout...


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




Public Function gfn_RechApresCar(sVal As String, sRech As String) As String
'//----o----o----o---Procedure header sample---o----o----o----o----o----o--
'// Procedure gfn_RechApresCar
'// Par : moilneu
'// Date : 21/07/2001 19:31:50
'//
'// Objet : Retourne la valeur contenu dans une chaine située
'// après un caractère déterminer.
'// Pour sVal = 'AA-BB-CC', Retourne 'CC' si sRech = '-'
'//
'// ENTRE <-
'// sVal : Chaine ou la recherche doit être faite.
'// sRech : Caractère à rechercher.
'//
'// SORT ->
'// Le resultat, ou une chaine vide si le caratère rechercher
'// n'as pas été trouver dans la chaine.
'//
'//----o----o----o----o----o----o----o----o----o----o----o----o----o----o--

Dim iPos As Integer '// Position en cours de la recherche.
Dim iMem As Integer '// Mémorisation de la position en cours.
Dim iLongVal As Integer '// Compteur pour la boucle.
Dim sRet As String '// Valeur renvoyer.

iPos = 1
For iLongVal = 1 To Len(sVal)
iPos = InStr(iPos, sVal, sRech)
If iPos = 0 Then
If (iMem <> 0) Then '// Extraire la chaine située après sRech.
sRet = Right(sVal, Len(sVal) - iMem)
End If
Exit For
Else
iMem = iPos '// Mémorise la position en cours.
iPos = iPos + 1
End If
Next iLongVal

gfn_RechApresCar = sRet '// Retourne le resultat.

End Function
Avatar
Buddy
Salut
Cette fonction renvoie la position d'une chaine dans une autre en partant par la fin.

Private Function pvfInStrRev(strChaine as String, strRech As String) As Long
Dim i As Integer, j As Integer, k As Integer
k = Len(strChaine)
i = Len(strRech)
If k > 0 Then
If i > 0 Then
For j = 1 To k Step 1
If Left(Right(strChaine, j), i) = strRech
pvfInStrRev = j
Exit Function
End If
Next j
End If
End If
pvfInStrRev = 0
End Function

J'espère ne m'être planté.
Ouala
Bye
Buddy
www.mlxconseil.fr.st


"BibiMtl" a écrit dans le message de
news:24b401c3e100$f095e1f0$
Bonjour,

j'aurais besoin d'avoir la programation pour faire un
module pour recree la fonction InStrRev, comme vous le
savez cette fonction n'existe pas dans toutes les version
de offcice et comme ma BDD est pour etre utiliser sur
plussieur ordinateur je doit la recreer

j'ai déja fais des rechercher , mais ce que j'ai trouvé :

Public Function MonInStrRev( ... ) As Long
MonInStrRev=InStrRev(... , compare:=vbTextCompare)
End Function


vba ne la prend pas, il me met toujours des lignes en rouge
( et comme je connais rien en vba) , qq'un peut-il me
corriger ce module, ou me donne un autre code qui fera la
meme chose.. merci d'avance!
Avatar
Pierre CFI [mvp]
ahhhhhhhhhhhhhhhhh le revoili, le revoilou j'ai maintenant une petite idée de ta corpulance, si la petite laine te va comme
un gant (du xl je flotte mais c'est chaud)

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"3stone" a écrit dans le message de news: #P$
Salut,

"BibiMtl"
j'aurais besoin d'avoir la programation pour faire un
module pour recree la fonction InStrRev, comme vous le
savez cette fonction n'existe pas dans toutes les version
de offcice et comme ma BDD est pour etre utiliser sur
plussieur ordinateur je doit la recreer



Voilà une version pondue par l'ami moilneu et qui roule partout...


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




Public Function gfn_RechApresCar(sVal As String, sRech As String) As String
'//----o----o----o---Procedure header sample---o----o----o----o----o----o--
'// Procedure gfn_RechApresCar
'// Par : moilneu
'// Date : 21/07/2001 19:31:50
'//
'// Objet : Retourne la valeur contenu dans une chaine située
'// après un caractère déterminer.
'// Pour sVal = 'AA-BB-CC', Retourne 'CC' si sRech = '-'
'//
'// ENTRE <-
'// sVal : Chaine ou la recherche doit être faite.
'// sRech : Caractère à rechercher.
'//
'// SORT ->
'// Le resultat, ou une chaine vide si le caratère rechercher
'// n'as pas été trouver dans la chaine.
'//
'//----o----o----o----o----o----o----o----o----o----o----o----o----o----o--

Dim iPos As Integer '// Position en cours de la recherche.
Dim iMem As Integer '// Mémorisation de la position en cours.
Dim iLongVal As Integer '// Compteur pour la boucle.
Dim sRet As String '// Valeur renvoyer.

iPos = 1
For iLongVal = 1 To Len(sVal)
iPos = InStr(iPos, sVal, sRech)
If iPos = 0 Then
If (iMem <> 0) Then '// Extraire la chaine située après sRech.
sRet = Right(sVal, Len(sVal) - iMem)
End If
Exit For
Else
iMem = iPos '// Mémorise la position en cours.
iPos = iPos + 1
End If
Next iLongVal

gfn_RechApresCar = sRet '// Retourne le resultat.

End Function




Avatar
3stone
j'ai maintenant une petite idée de ta corpulance, si la petite laine te va comme
un gant (du xl je flotte mais c'est chaud)



Tu as rempli un formulaire, il n'y a pas très longtemps...
- soit tu as mis XL
- soit tu n'as rien mis et alors, elles ont prévu "grand" (tu vois, je reste élegant ;-)


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Pierre CFI [mvp]
oui, proportionné au talent, en quelque sorte, une fois...:o)))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"3stone" a écrit dans le message de news:
j'ai maintenant une petite idée de ta corpulance, si la petite laine te va comme
un gant (du xl je flotte mais c'est chaud)



Tu as rempli un formulaire, il n'y a pas très longtemps...
- soit tu as mis XL
- soit tu n'as rien mis et alors, elles ont prévu "grand" (tu vois, je reste élegant ;-)


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------







Avatar
bibimtl
merci, ca fonctionne pour me done les caracteres apres la
lettes choisi , mais pour trouver la position?(ex. 6)
comment je peux faire? merci.



-----Message d'origine-----
Salut,

"BibiMtl"
j'aurais besoin d'avoir la programation pour faire un
module pour recree la fonction InStrRev, comme vous le
savez cette fonction n'existe pas dans toutes les version
de offcice et comme ma BDD est pour etre utiliser sur
plussieur ordinateur je doit la recreer



Voilà une version pondue par l'ami moilneu et qui roule
partout...



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




Public Function gfn_RechApresCar(sVal As String, sRech As
String) As String

'//----o----o----o---Procedure header sample---o----o----
o----o----o----o--

'// Procedure gfn_RechApresCar
'// Par : moilneu
'// Date : 21/07/2001 19:31:50
'//
'// Objet : Retourne la valeur contenu dans une chaine
située

'// après un caractère déterminer.
'// Pour sVal = 'AA-BB-CC', Retourne 'CC' si
sRech = '-'

'//
'// ENTRE <-
'// sVal : Chaine ou la recherche doit être
faite.

'// sRech : Caractère à rechercher.
'//
'// SORT ->
'// Le resultat, ou une chaine vide si le caratère
rechercher

'// n'as pas été trouver dans la chaine.
'//
'//----o----o----o----o----o----o----o----o----o----o----
o----o----o----o--


Dim iPos As Integer '// Position en cours de la
recherche.

Dim iMem As Integer '// Mémorisation de la
position en cours.

Dim iLongVal As Integer '// Compteur pour la boucle.
Dim sRet As String '// Valeur renvoyer.

iPos = 1
For iLongVal = 1 To Len(sVal)
iPos = InStr(iPos, sVal, sRech)
If iPos = 0 Then
If (iMem <> 0) Then '// Extraire la chaine
située après sRech.

sRet = Right(sVal, Len(sVal) - iMem)
End If
Exit For
Else
iMem = iPos '// Mémorise la position en
cours.

iPos = iPos + 1
End If
Next iLongVal

gfn_RechApresCar = sRet '// Retourne le resultat.

End Function


.



Avatar
BibiMtl
Salut merci, j'ai bien tente ta fonction mais la ligne :

If Left(Right(strChaine, j), i) = strRech

demeure en rouge.. une erreur?



merci


-----Message d'origine-----
Salut
Cette fonction renvoie la position d'une chaine dans une
autre en partant par la fin.


Private Function pvfInStrRev(strChaine as String, strRech
As String) As Long

Dim i As Integer, j As Integer, k As Integer
k = Len(strChaine)
i = Len(strRech)
If k > 0 Then
If i > 0 Then
For j = 1 To k Step 1
If Left(Right(strChaine, j), i) = strRech
pvfInStrRev = j
Exit Function
End If
Next j
End If
End If
pvfInStrRev = 0
End Function

J'espère ne m'être planté.
Ouala
Bye
Buddy
www.mlxconseil.fr.st


"BibiMtl" a écrit
dans le message de

news:24b401c3e100$f095e1f0$
Bonjour,

j'aurais besoin d'avoir la programation pour faire un
module pour recree la fonction InStrRev, comme vous le
savez cette fonction n'existe pas dans toutes les version
de offcice et comme ma BDD est pour etre utiliser sur
plussieur ordinateur je doit la recreer

j'ai déja fais des rechercher , mais ce que j'ai trouvé :

Public Function MonInStrRev( ... ) As Long
MonInStrRev=InStrRev(... , compare:=vbTextCompare)
End Function


vba ne la prend pas, il me met toujours des lignes en
rouge

( et comme je connais rien en vba) , qq'un peut-il me
corriger ce module, ou me donne un autre code qui fera la
meme chose.. merci d'avance!


.



Avatar
3stone
Salut,

"bibimtl"
merci, ca fonctionne pour me done les caracteres apres la
lettes choisi , mais pour trouver la position?(ex. 6)
comment je peux faire? merci.



Ah oui... pas fait gaffe ;-)


Utilise ceci pour la position:

Function InStrRev(ChaineOuChercher, CaractereCherché) As Integer
Dim n As Integer
Dim i As Integer
Dim Compteur As Integer

If IsNull(ChaineOuChercher) Or IsNull(CaractereCherché) Then
InStrRev = 0
Exit Function
End If

i = Len(ChaineOuChercher)
For n = i To 1 Step -1
If Mid(ChaineOuChercher, n, 1) = CaractereCherché Then
Compteur = i - n + 1
Exit For
End If
Next
InStrRev = Compteur
End Function


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
BibiMtl
C parfait merci!


-----Message d'origine-----
Salut,

"bibimtl"
merci, ca fonctionne pour me done les caracteres apres la
lettes choisi , mais pour trouver la position?(ex. 6)
comment je peux faire? merci.



Ah oui... pas fait gaffe ;-)


Utilise ceci pour la position:

Function InStrRev(ChaineOuChercher, CaractereCherché) As
Integer

Dim n As Integer
Dim i As Integer
Dim Compteur As Integer

If IsNull(ChaineOuChercher) Or IsNull
(CaractereCherché) Then

InStrRev = 0
Exit Function
End If

i = Len(ChaineOuChercher)
For n = i To 1 Step -1
If Mid(ChaineOuChercher, n, 1) =
CaractereCherché Then

Compteur = i - n + 1
Exit For
End If
Next
InStrRev = Compteur
End Function


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




.