Fonctionnement de InstrRev

Le
ThierryP
Bonjour tout le monde !

Otez-moi d'un doute La fonction InstrRev est bien censée me renvoye=
r la position d'un caractère en partant de la fin de la chaîne, càd q=
ue InstrRev("abcde","d") devrait me renvoyer 2 sur mon poste actuel, ell=
e me renvoie la même valeur que Instr, càd 4.

Un micro-climat, ou bien ????

Merci d'avance

Thierry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #25021232
Bonjour,

T = "abcde25214d65hh"

=InStrRev(T, "d") -> te renvoie la position du dernier "D" dans la chaine de caractère

=InStrRev(T, "d",8) -> te renvoie 4. À partir du caractère 8 en allant vers la gauche,
elle retourne la position du premier caractère "D" qu'elle rencontre

x = Mid(T, InStrRev(T, "d"), 2) -> X = d6


MichD
--------------------------------------------------------------
ThierryP
Le #25021432
Bonjour Denis,

Toujours fidèle au poste !
Chez moi, la première instruction me renvoie 11, elle devrait me donner 5 , non?
La deuxième InStrRev(T, "d",5) me renvoie 4, soit la position du premier "d" [j'ai remplacé 8 par 5, pour déséquilibrer le calcul : avec 8 on tombe sur 4 dans un sens comme dans l'autre], la troisième me renvoie bie n "d6"

J'en perds le peu de latin que j'avais !

Thierry

Le mardi 4 décembre 2012 15:36:16 UTC+1, MichD a écrit :
Bonjour,



T = "abcde25214d65hh"



=InStrRev(T, "d") -> te renvoie la position du dernier "D" dans la chai ne de caractère



=InStrRev(T, "d",8) -> te renvoie 4. À partir du caractère 8 en all ant vers la gauche,

elle retourne la position du premier c aractère "D" qu'elle rencontre



x = Mid(T, InStrRev(T, "d"), 2) -> X = d6





MichD

--------------------------------------------------------------
MichD
Le #25021422
| Chez moi, la première instruction me renvoie 11, elle devrait me donner 5, non?

Moi, je lis toujours de gauche à droite... ;-)
11 représente la position dans la chaîne lue de gauche à droite pour plus de précision.

| =InStrRev(T, "d",8) -> te renvoie 4.
Cela signifie qu'à partir de la position 8 dans la chaîne de caractères puisque c'est la
position de départ que j'ai choisi, la fonction InStrRev() renvoie 4 car elle retourne
la position de la première occurrence de la lettre "d" dans la chaîne, mais elle ne peut
pas dépasser la position 8 puisque c'est la position de départ que je lui ai donné.

C'est comme ça! Il n'y a pas grand-chose que l'on peut faire!
;-)

MichD
--------------------------------------------------------------
Jacquouille
Le #25022132
Bonsoir,
C'est pas un peu la cousine de STXT, ça ?



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
k9l6f9$1l8$





| Chez moi, la première instruction me renvoie 11, elle devrait me donner 5,
non?

Moi, je lis toujours de gauche à droite... ;-)
11 représente la position dans la chaîne lue de gauche à droite pour plus de
précision.

| =InStrRev(T, "d",8) -> te renvoie 4.
Cela signifie qu'à partir de la position 8 dans la chaîne de caractères
puisque c'est la
position de départ que j'ai choisi, la fonction InStrRev() renvoie 4 car
elle retourne
la position de la première occurrence de la lettre "d" dans la chaîne, mais
elle ne peut
pas dépasser la position 8 puisque c'est la position de départ que je lui ai
donné.

C'est comme ça! Il n'y a pas grand-chose que l'on peut faire!
;-)

MichD
--------------------------------------------------------------
MichD
Le #25022242
Bonjour Jacquouille,

Je dirais que c'est la cousine de Instr() comme dans l'exemple suivant

s = InStr(1, "abcde", "d", vbTextCompare)

s = 4 la fonction retourne la position de la première occurrence à partir de la droite
où à partir du point de départ qu'on lui donne représenté dans mon exemple par 1

MichD
--------------------------------------------------------------
Jacquouille
Le #25022462
Ok, merci Denis
J'ignorais qu'il existait une fonction pour faire lire Excel de D vers la G.
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
k9lhet$br$

Bonjour Jacquouille,

Je dirais que c'est la cousine de Instr() comme dans l'exemple suivant

s = InStr(1, "abcde", "d", vbTextCompare)

s = 4 la fonction retourne la position de la première occurrence à partir
de la droite
où à partir du point de départ qu'on lui donne représenté dans mon
exemple par 1

MichD
--------------------------------------------------------------
MichD
Le #25022612
On aurait dû lire : GAUCHE

s = InStr(1, "abcde", "d", vbTextCompare)

s = 4 la fonction retourne la position de la première occurrence à partir
de la GAUCHE où à partir du point de départ qu'on lui donne
représenté dans mon exemple par 1


MichD
--------------------------------------------------------------
LSteph
Le #25023542
Bonjour,

D'accord avec toi a priori, Thierry ou il y a une subtilité qui me laisse
perplexe.

Oui visiblement cet InstrRev semble avoir un souci ou ne pas faire ce qu'il
laisse entendre dans l'aide
curieux d'ailleurs que tout exemple en soit omis..

J'ai testé avec a,b,c,d et e

MsgBox InStr(1, "abcde", "d")
MsgBox InStrRev("abcde", "d")

renvoient exactement le même nombre

le troisième param de instrrev est censé etre -1 par défaut et ainsi partir
du dernier chr

Si on lit de gauche à droite une chaine la lire à l'envers me semble bien
être de droite à gauche
selon ce que dit l'aide et ce qui humblement me paraitrait logique serait
que InStrREV pour "d" ici renvoie 2
pourtant cela renvoie 4.

Si cela est prévu ainsi, c'est que quelquechose m'échappe à commencer par
l'utilité réelle de cet InstrRev.
Je m'en vais relire les explications de MichD que j'ai déjà relues trois
fois sans succès,
des fois qu'à force la lumière jaillisse, mon neurone doit souffrir du
froid.

Cordialement.

--
LSteph

"ThierryP" news:
Bonjour tout le monde !

Otez-moi d'un doute...... La fonction InstrRev est bien censée me renvoyer
la position d'un caractère en partant de la fin de la chaîne, càd que
InstrRev("abcde","d") devrait me renvoyer 2... sur mon poste actuel, elle me
renvoie la même valeur que Instr, càd 4.

Un micro-climat, ou bien ????

Merci d'avance

Thierry
MichD
Le #25024482
Refais ce test avec cette chaîne :

J'ai testé avec a,b,c,d et e

MsgBox InStr(1, "abcdeabcdeabcde", "d")
MsgBox InStrRev("abcdeabcdeabcde", "d")

Obtiens-tu toujours le même résultat?

Les 2 fonctions déterminent toujours la position du caractère dans la chaîne
La lecture s'effectue toujours de gauche à droite.
Si on n'indique pas la position de départ,
InStr() retourne la position de la première occurrence dans la chaîne
InStrRev() retourne la position de la dernière occurrence dans la chaîne ou
la première occurrence de la lettre à partir de la droite, mais elle
lit toujours de gauche à droite.

Si on détermine la position de départ, les 2 fonctions continuent à opérer de la
même manière, mais en partant de la position suggérée dans le paramètre.
InStr() Cherche la première occurrence à partir de la position déterminée par
le paramètre (lecture de gauche à droite)
InStrRev() cherche la dernière occurrence du caractère dans la chaîne sans tenir
compte des caractères situés après la position fixée dans le paramètre

Il n'y a pas grand-chose à discuter avec les fonctions "Built-in" d'Excel. L'important
est de savoir comme elle fonctionne.


MichD
--------------------------------------------------------------
gmlsteph
Le #25025012
Eureka!

Merci MD

le REV ne s'applique donc pas à la chaine mais au coté par lequel on co mmence la recherche

la chaine se lit toujours "abcdeabcdeabcde"
et non pas "edcbaedcbaedcba"

donc on repere le premier d en partant de la fin
qui même s'il se rencontre en second se trouve à la position 14
de la chaine lue dans le sens normal.

Bien compris la nuance.

@++

--
LSteph
(mon neurone s'est réchauffé)

Le mercredi 5 décembre 2012 12:48:36 UTC+1, MichD a écrit :
Refais ce test avec cette cha�ne :



J'ai test� avec a,b,c,d et e



MsgBox InStr(1, "abcdeabcdeabcde", "d")

MsgBox InStrRev("abcdeabcdeabcde", "d")



Obtiens-tu toujours le m�me r�sultat?



Les 2 fonctions d�terminent toujours la position du caractï¿ ½re dans la cha�ne

La lecture s'effectue toujours de gauche � droite.

Si on n'indique pas la position de d�part,

InStr() retourne la position de la premi�re occurrence dans la ch a�ne

InStrRev() retourne la position de la derni�re occurrence dans la cha�ne ou

la premi�re occurrence de la lettre � pa rtir de la droite, mais elle

lit toujours de gauche � droite.



Si on d�termine la position de d�part, les 2 fonctions co ntinuent � op�rer de la

m�me mani�re, mais en partant de la position suggï¿ ½r�e dans le param�tre.

InStr() Cherche la premi�re occurrence � partir de la pos ition d�termin�e par

le param�tre (lecture de gauche � droite)

InStrRev() cherche la derni�re occurrence du caract�re da ns la cha�ne sans tenir

compte des caract�res situ�s aprï¿ ½s la position fix�e dans le param�tre



Il n'y a pas grand-chose � discuter avec les fonctions "Built-in" d'Excel. L'important

est de savoir comme elle fonctionne.





MichD

--------------------------------------------------------------
Publicité
Poster une réponse
Anonyme