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

Trouver une chaîne de caractère dans une autre, mais ne fonctionne pas toujours

1 réponse
Avatar
Jean-Marc
Salut à toutes et à tous,

Dans une requête, je dois trouver une chaîne de caractères dans un champs.
La syntaxe est la suivante : nombre tiret nombre. Ex : 1-1 25-2
47-35
La majorité du temps, cette syntaxe est seule dans le champs, mais des fois
il y en a 2 séparés par une virgule. Ex 25-4,5-2 47-10,47-11

Si j'écris ceci, ça fonctionne à moitié :
Centroide: VraiFaux(DansChaîne([CENTROID]);[centrval])>0;[centrval];"")
Pourquoi à moitié ?
Si je mets 5-2, il va me sortir 5-2, mais aussi 25-2, 5-20, 25-20, ...

Je n'arrive pas à trouver la formule qui me permettrait d'extraire seulement
la chaîne exacte.

Merci de vos z'avis z'avisés,
Jean-Marc

1 réponse

Avatar
Fabien
Salut à toutes et à tous,

Dans une requête, je dois trouver une chaîne de caractères dans un champs.
La syntaxe est la suivante : nombre tiret nombre. Ex : 1-1 25-2
47-35
La majorité du temps, cette syntaxe est seule dans le champs, mais des fois
il y en a 2 séparés par une virgule. Ex 25-4,5-2 47-10,47-11

Si j'écris ceci, ça fonctionne à moitié :
Centroide: VraiFaux(DansChaîne([CENTROID]);[centrval])>0;[centrval];"")
Pourquoi à moitié ?
Si je mets 5-2, il va me sortir 5-2, mais aussi 25-2, 5-20, 25-20, ...

Je n'arrive pas à trouver la formule qui me permettrait d'extraire seulement
la chaîne exacte.

Merci de vos z'avis z'avisés,
Jean-Marc




Function dans_chaine(chaine,recherche as string) as string
dim i as interger
I=instr(1,chaine,recherche) 'On recherche la position de la chaine
recherchée
If I<>0 then 'Si ok
if i=1 then 'et si en début de chaine
If len(chaine)=len(recherche) then 'si les chaines sont les mêmes
dans_chaine=recherche
else 'sinon on test le caractére qui suit
if left(chaine,I+len(recherche)+1)="," then 'si c'est une , ou pas
Dans_chaine=Recherche
else
Dans_chaine=""
end if
end if
else
if left(chaine,I-1)="," then 'test si le caractére précédent est une ,
Dans_Chaine=Recherche
else
Dans_chaine = ""
end if
end if
else
Dans_chaine=""
end if
end func

Pas tester et à optimiser bien sur ;-)