InstrRev ne fonctionne plus :-(

Résolu
ZedMaTrix Messages postés 178 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 14 août 2008 - 28 févr. 2007 à 09:43
ZedMaTrix Messages postés 178 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 14 août 2008 - 28 févr. 2007 à 09:54
Hello à tous !

Ca fait un monent que InstrRev chez moi ne fonctionne plus !
Il fais exactement la même chose que Instr tout court.

Par exemple, si je fais un truc du genre :

Dim lstrMyStr as String

lstrMyStr = "Hello World ! zed"

MsgBox Right( lstrMyStr, InstrRev( lstrMyStr, "!" ) )

Il me met un message box contenant "o World ! zed" ( InstrRev à retourné le nombre 13 au lieu de 5 )

Comment ca se peut ca ??

ZedMaTriX

4 réponses

linasteph Messages postés 153 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 juillet 2009 1
28 févr. 2007 à 09:51
Salut,

En fait cela te donne la position dans la chaîne du premier caractères xxx mais en partant de la fin de la chaîne vers le début.
Ici Instr and InstrRev donne le même résultat vu que'il n'y a qu'un seul caractère ! dans ta chaîne.

Si tu veux récupérer ce qu'il y a à droite du caractère !, utilise MsgBox Right(lstrMyStr, Len(lstrMyStr) - InStrRev(lstrMyStr, "!"))

@+
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 févr. 2007 à 09:51
InstrRev fonctionne donc correctement.

InStrRev te retourne l'index du premier caractère rencontré correspondant au caractère passé en paramètre. Le Rev ne signifie aucunement que le comptage des index commence à la fin. C'est juste la recherche qui commence par la fin.

Il est donc tout à fait normal que InStrRev te renvoie 13.

Si tu veux effectivement avoir l'index en partant de la fin, il faut faire Len(lstrMyStr)-InstrRev( lstrMyStr, "!" )

Si tu veux seulement récupérer les derniers caractères tu peux aussi (et même plutot) utliser la fonction Mid à la place de Right.

Dim lstrMyStr as String

lstrMyStr = "Hello World ! zed"

MsgBox Mid( lstrMyStr, InstrRev( lstrMyStr, "!" ) )

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
ZedMaTrix Messages postés 178 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 14 août 2008
28 févr. 2007 à 09:52
Aprés quelques tests, je m'apercoie que InStr me renvoie la position du premier '!' tout comme InStrRev car il n'y a que un '!'
Parcontre si j'en place un deuxième, il me donne bien le dernier.

Enffet je vient de comprend mon erreur....

J'ai mal compris le fonctionnement de la fonction.
Je pensais que InStrRev lisais notre chaine en partant de la fin vers le début, et donc retournais la position en partant de la fin du premier '!'...

Bon donc c'est moi le problème

ZedMaTriX
0
ZedMaTrix Messages postés 178 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 14 août 2008
28 févr. 2007 à 09:54
ha bha j'avais pas vue vos réponses

Merci beaucoup à tout les deux !

ZedMaTriX
0
Rejoignez-nous