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
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
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
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
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
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)
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
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
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 !
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
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
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" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news: OPN$C$U9EHA.4028@TK2MSFTNGP15.phx.gbl...
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)
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
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
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" <raimondpointschmidt@berlin.de> a écrit dans le message de news:
exBrIeV9EHA.2600@TK2MSFTNGP09.phx.gbl...
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" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
OPN$C$U9EHA.4028@TK2MSFTNGP15.phx.gbl...
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)
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
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
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" <pasdepub@oneado.fr> a écrit dans le message de news: %23bTCHlV9EHA.3368@TK2MSFTNGP10.phx.gbl...
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" <raimondpointschmidt@berlin.de> a écrit dans le message de news:
exBrIeV9EHA.2600@TK2MSFTNGP09.phx.gbl...
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" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
OPN$C$U9EHA.4028@TK2MSFTNGP15.phx.gbl...
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)
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
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
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"
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
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
...( ... 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