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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6299721
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 ;-)

Publicité
Poster une réponse
Anonyme