InstrRev ne fonctionne plus :-( [Résolu]

Messages postés
178
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
14 août 2008
- - Dernière réponse : 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
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
153
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 juillet 2009
1
3
Merci
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, "!"))

@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 132 internautes nous ont dit merci ce mois-ci

Commenter la réponse de linasteph
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
3
Merci
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 #

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 132 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
178
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
14 août 2008
0
Merci
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
Commenter la réponse de ZedMaTrix
Messages postés
178
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
14 août 2008
0
Merci
ha bha j'avais pas vue vos réponses

Merci beaucoup à tout les deux !

ZedMaTriX
Commenter la réponse de ZedMaTrix