Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche caractère

13 réponses
Avatar
Grar
bonsoir,

peut-on, avec une formule, rechercher la position d'un caractère particulier
dans une chaine (afin de la tronquer), en connaissant le numéro de son
occurence.
par exemple:
- le 3eme point
- la 5eme virgule

je ne m'en sort pas avec CHERCHE car je ne sais pas a priori combien de fois
le caractère est présent dans la chaine

Grar

10 réponses

1 2
Avatar
j
pour le 3ème point de C16 :

=CHERCHE(".";$C$16;1+CHERCHE(".";$C$16;1+CHERCHE(".";$C$16;1)))

mais je suppose que ce n'est pas ça que tu cherches (?)



"Grar" a écrit dans le message de news:
#
bonsoir,

peut-on, avec une formule, rechercher la position d'un caractère
particulier

dans une chaine (afin de la tronquer), en connaissant le numéro de son
occurence.
par exemple:
- le 3eme point
- la 5eme virgule

je ne m'en sort pas avec CHERCHE car je ne sais pas a priori combien de
fois

le caractère est présent dans la chaine

Grar




Avatar
Michel Gaboly
Bonsoir Grar,

CHERCHE() comporte comme 3ème argument, facultatif, la position à partir
de laquelle chercher, ce qui résoud le problème :

=CHERCHE(".";A1;CHERCHE(".";A1;CHERCHE(".";A1) + 1) + 1)
Avatar
FxM
bonsoir,

peut-on, avec une formule, rechercher la position d'un caractère particulier
dans une chaine (afin de la tronquer), en connaissant le numéro de son
occurence.
par exemple:
- le 3eme point
- la 5eme virgule

je ne m'en sort pas avec CHERCHE car je ne sais pas a priori combien de fois
le caractère est présent dans la chaine

Grar



Bonsoir,

Sous forme d'une fonction perso :

Alt-F11 | insertion | module
Y copier ce qui suit :
'--- de là ---
Public Function chrch(xieme, caract, chaine)
'rechercher la position du xième caractère
'MPFE FxM 20050107

nb = Len(chaine) - Len(Application.Substitute(chaine, caract, ""))
If nb = 0 Or nb < xieme Then
chrch = 0: Exit Function
Else
chrch = 0: cpt = 0
While cpt < xieme
chrch = InStr(chrch + 1, chaine, caract)
cpt = cpt + 1
Wend
End If
End Function
'--- à là ---

Usage :
=chrch(2;9;C7)
recherche la position du 2e chiffre 9 de la cellule C7.

=chrch(3;".";chaine) suppose que chaine est une cellule nommée
=chrch(5;",";G67)


Cette fonction est également utilisable par macro :
Sub test3()
texte = ".1.2.3.4.5.6.7.8.9.0"
quoi = "."
nb = 5
zz = chrch(nb, quoi, texte)
End Sub

@+
FxM

Avatar
AV
La position du 3° point de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;".";"¥T";3))

La position de la 5° virgule de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;",";"¥T";3))
il y a ça aussi (matricielle) :
=PETITE.VALEUR(SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)=",";LIGNE(INDIRECT(
"1:"&NBCAR(A1)));"");5)

AV
Avatar
AV
La position de la 5° virgule de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;",";"¥T";3))


Pffff...
il faut, évidemment, remplacer le 3 par un 5 !

AV

Avatar
Rai
Bonjour Alain,

BRAVO !
Je me suis demandé un instant ce que venait faire "¥T" dans la formule.
Ensuite je me suis tapé la tête contre les murs en criant "Evident !!"

C'est le genre de solutions que j'adore : simple, efficace ... il suffisait d'y penser ;o))

Bonne fin de semaine

Rai

"AV" a écrit dans le message de news: OPN$C$
La position du 3° point de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;".";"¥T";3))

La position de la 5° virgule de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;",";"¥T";3))
il y a ça aussi (matricielle) :
=PETITE.VALEUR(SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)=",";LIGN E(INDIRECT(
"1:"&NBCAR(A1)));"");5)

AV




Avatar
Pounet95
Bonjour Rai, ( ... et tous ceux actuellement présents sur le forum )
Etant d'une santé fragile et très douillet, si tu peux m'expliquer que je me
couche moins idiot ce soir.
Merci

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Rai" a écrit dans le message de news:

Bonjour Alain,

BRAVO !
Je me suis demandé un instant ce que venait faire "¥T" dans la formule.
Ensuite je me suis tapé la tête contre les murs en criant "Evident !!"

C'est le genre de solutions que j'adore : simple, efficace ... il suffisait
d'y penser ;o))

Bonne fin de semaine

Rai

"AV" a écrit dans le message de news:
OPN$C$
La position du 3° point de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;".";"¥T";3))

La position de la 5° virgule de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;",";"¥T";3))
il y a ça aussi (matricielle) :
=PETITE.VALEUR(SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)=",";LIGNE(INDIRECT(
"1:"&NBCAR(A1)));"");5)

AV




Avatar
Rai
Salut Mr Pounet,

C'est d'une simplicité cette formule !!
J'aurais pas trouvé tout seul de mon plein gré, mais c'est d'une simplicité ...

SUBSTITUE(A1;".";"¥T";3) : remplace le 3eme . de la chaine contenue en A1 par ¥T
Ensuite il ne reste plus qu'à TROUVEr ¥T ...
TROUVE("¥T";SUBSTITUE(A1;",";"¥T";3))

Pourquoi ¥T ??
Parce-qu'on l'utilise très peu dans nos textes occidentaux...

Bonne journée

Rai


"Pounet95" a écrit dans le message de news: %
Bonjour Rai, ( ... et tous ceux actuellement présents sur le forum )
Etant d'une santé fragile et très douillet, si tu peux m'expliquer que je me
couche moins idiot ce soir.
Merci

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Rai" a écrit dans le message de news:

Bonjour Alain,

BRAVO !
Je me suis demandé un instant ce que venait faire "¥T" dans la formule.
Ensuite je me suis tapé la tête contre les murs en criant "Evident !!"

C'est le genre de solutions que j'adore : simple, efficace ... il suffisait
d'y penser ;o))

Bonne fin de semaine

Rai

"AV" a écrit dans le message de news:
OPN$C$
La position du 3° point de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;".";"¥T";3))

La position de la 5° virgule de la chaîne contenue en A1 :
=TROUVE("¥T";SUBSTITUE(A1;",";"¥T";3))
il y a ça aussi (matricielle) :
=PETITE.VALEUR(SI(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)=",";LIGN E(INDIRECT(
"1:"&NBCAR(A1)));"");5)

AV







Avatar
AV
Je me suis demandé un instant ce que venait faire "¥T" dans la formule.


En fait, c'est pas tout à fait ça ("¥T") car c'est une transcription
approximative de OE pour CAR(165)&CAR(153)
Mais ça reste anecdotique dans la mesure où tu peux mettre ce que tu veux en
lieu et place, pour autant que ce soit suffisamment "bizarre" pour qu'il n'y
aucune chance que ça existe dans une "chaîne ordinaire"

AV

Avatar
AV
...( ... et tous ceux actuellement présents sur le forum )


"L'astuce" consiste simplement en l'utilisation du 4° argument (facultatif) très
peu utilisé de la fonction SUBSTITUE

AV

1 2