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

Position du 2eme "/" dans une chaine

4 réponses
Avatar
Valérie
Bonjour,
J'ai une chaine de caractere de type 1/10/20 puis 2/20/30 puis 3/30/40. Je
voudrais que cela devienne dans un champ "De 10 à 20", "De 20 à 30"
.....DansChaîne me permet d'obtenir la position du premier "/" et donc je
peux extraire à partir de cette position+1 mais comment connaitre la
position du 2eme "/" ? Merci pour vos réponses.

4 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Regardes la fonction InStr, tu pourras connaître la position
du premier "/" ensuite pour le 2ème, soit tu utilises aussi
InStr en commençant à partir de la position du premier
ou alors tu utilises la fonction InStrRev() qui te reournera
la position du dernier "/"

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Valérie" a écrit dans le message news:
41e3934b$0$6376$
Bonjour,
J'ai une chaine de caractere de type 1/10/20 puis 2/20/30 puis 3/30/40. Je
voudrais que cela devienne dans un champ "De 10 à 20", "De 20 à 30"
.....DansChaîne me permet d'obtenir la position du premier "/" et donc je
peux extraire à partir de cette position+1 mais comment connaitre la
position du 2eme "/" ? Merci pour vos réponses.




Avatar
Thierry Bertrand
J'aime bien aussi la fonction Split

Dim S() as string

s = split(Chaine,"/")

Ainsi,
s(0) contient le 1er champ
s(1) contient le 2eme champ

etc...


D'où la "superbe fonction" qui renvoi le x eme élément

Function QuiQuestOu (Byval Chaine as string, byval Delimiteur as string,
byval Index as integer) as string

Dim s() as string

s = split(Chaine,Delimiteur)
if ubound(s) >= Index-1 then
QuiQuestOu = s(index-1)
else
QuiQuestOu = ""
end if
end function

qui s'utilise comme suit:

s = QuiQuestOu("1/20/20","/",2) pour obtenir le 2eme élément de la
chaine avec comme délimiteur "/"


"Valérie" a écrit dans le message de news:
41e3934b$0$6376$
Bonjour,
J'ai une chaine de caractere de type 1/10/20 puis 2/20/30 puis 3/30/40. Je
voudrais que cela devienne dans un champ "De 10 à 20", "De 20 à 30"
.....DansChaîne me permet d'obtenir la position du premier "/" et donc je
peux extraire à partir de cette position+1 mais comment connaitre la
position du 2eme "/" ? Merci pour vos réponses.




Avatar
Jessy Sempere [MVP]
Bonjour

Et voilà c'est quand je voie des réponses comme ça que je
me dis que je me casse vraiment trop la tête et qu'il y a plus
simple... ;-))))

Bon aller pour me racheter si tu es sous Access 97, la fonction
Split() n'existe pas donc tu me utiliser celle qui suit comme alternative :

*****************************************************
Public Function fSplit(strSplit As String, strSep As String) As Variant

Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant

If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
*****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Thierry Bertrand" <bertrand.thierry(nospam)@(nospam)numericable.fr> a écrit
dans le message news:
J'aime bien aussi la fonction Split

Dim S() as string

s = split(Chaine,"/")

Ainsi,
s(0) contient le 1er champ
s(1) contient le 2eme champ

etc...


D'où la "superbe fonction" qui renvoi le x eme élément

Function QuiQuestOu (Byval Chaine as string, byval Delimiteur as string,
byval Index as integer) as string

Dim s() as string

s = split(Chaine,Delimiteur)
if ubound(s) >= Index-1 then
QuiQuestOu = s(index-1)
else
QuiQuestOu = ""
end if
end function

qui s'utilise comme suit:

s = QuiQuestOu("1/20/20","/",2) pour obtenir le 2eme élément de la
chaine avec comme délimiteur "/"


"Valérie" a écrit dans le message de news:
41e3934b$0$6376$
Bonjour,
J'ai une chaine de caractere de type 1/10/20 puis 2/20/30 puis 3/30/40.
Je


voudrais que cela devienne dans un champ "De 10 à 20", "De 20 à 30"
.....DansChaîne me permet d'obtenir la position du premier "/" et donc
je


peux extraire à partir de cette position+1 mais comment connaitre la
position du 2eme "/" ? Merci pour vos réponses.








Avatar
Thierry Bertrand
Mauvais joueur, y'avait pas marqué Access 97 ;-)))

En tout cas merci pour ta fonction fSplit au passage

"Jessy Sempere [MVP]" a écrit dans le message de
news: 41e3acad$
Bonjour

Et voilà c'est quand je voie des réponses comme ça que je
me dis que je me casse vraiment trop la tête et qu'il y a plus
simple... ;-))))

Bon aller pour me racheter si tu es sous Access 97, la fonction
Split() n'existe pas donc tu me utiliser celle qui suit comme alternative
:


*****************************************************
Public Function fSplit(strSplit As String, strSep As String) As Variant

Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant

If IsNull(strSplit) Then
fSplit = Null
Else
strResult = strSplit
L = Len(strSep)
p = InStr(1, strSplit, strSep)
If p = 0 Then
fSplit = strSplit
Else
Do While p > 0
nb = nb + 1
ReDim Preserve varResult(nb)
varResult(nb - 1) = left(strResult, p - 1)
strResult = Mid(strResult, p + L)
p = InStr(1, strResult, strSep)
If p = 0 Then varResult(nb) = strResult
Loop
fSplit = varResult()
End If
End If
End Function
*****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Thierry Bertrand" <bertrand.thierry(nospam)@(nospam)numericable.fr> a
écrit

dans le message news:
J'aime bien aussi la fonction Split

Dim S() as string

s = split(Chaine,"/")

Ainsi,
s(0) contient le 1er champ
s(1) contient le 2eme champ

etc...


D'où la "superbe fonction" qui renvoi le x eme élément

Function QuiQuestOu (Byval Chaine as string, byval Delimiteur as string,
byval Index as integer) as string

Dim s() as string

s = split(Chaine,Delimiteur)
if ubound(s) >= Index-1 then
QuiQuestOu = s(index-1)
else
QuiQuestOu = ""
end if
end function

qui s'utilise comme suit:

s = QuiQuestOu("1/20/20","/",2) pour obtenir le 2eme élément de la
chaine avec comme délimiteur "/"


"Valérie" a écrit dans le message de news:
41e3934b$0$6376$
Bonjour,
J'ai une chaine de caractere de type 1/10/20 puis 2/20/30 puis
3/30/40.



Je
voudrais que cela devienne dans un champ "De 10 à 20", "De 20 à 30"
.....DansChaîne me permet d'obtenir la position du premier "/" et donc
je


peux extraire à partir de cette position+1 mais comment connaitre la
position du 2eme "/" ? Merci pour vos réponses.