cs_Pirotes31
Messages postés37Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention 3 juillet 2015
-
13 févr. 2009 à 11:57
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
13 févr. 2009 à 16:32
Bonjour,
voici mon problème :
je dois chercher dans une chaine de caractère si un numéro est présent, quand dans cette chaine il y a un intervalle de numéro. Plus concrètement voici le type de chaine que je peux avoir :
" le numéros vont de (1000>9000)"
Mais j'ai aussi certaines chaines qui peuvent être sous la forme :
" si numéro > 100 alors"
Je pensais biensûr utiliser la fonction InStr, et me baser sur le caractère ">", mais je n'arrive pas à bien organiser mon raisonnement...
dès que j'ai pu déterminer l'intervalle, je ferais évidemment une boucle pour tester si mon numéro donné au départ est bien dans l'intervalle.
Pouvez-vous m'aider? Avez-vous des pistes?
D'avance merci pour vos réponses.
Cordialement,
Pirotes31.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 févr. 2009 à 13:48
Salut
Comme tu l'as pensé, il faut isoler le terme important dans ce texte.
Il est donc primordial que le texte se présente toujours sous la même forme :
(1000>9000)
ne sera pas la même chose que
(1000 > 9000)
--> En plus de Instr, il y a un outil très pratique pour faire du découpage : Split
Il converti une chaine de caractères en un tableau de chaine en se basant sur un caractère, exemple :
Dim mTableau() As String
mTableau = Split(" le numéros vont de (1000>9000)", " ")
renverra un tableau de chaine (colonne de gauche = index du tableau) :
0 : "" car il y a un espace en tête de chaine
1 : "le"
2 : "numéros"
3 : "vont"
4 : "de"
5 : "(1000>9000)"
Le nombre maxi de chaines dans le tableau est donné par UBound(mTableau)
Cela peut-être un bon début pour isoler les chiffres, sachant qu'un second Split :
Dim mXXX() As String
mXXX = Split(mTableau(5), ">")
te donnera
0 : "(1000"
1 : "9000)"
etc ...
Si tu fais un Split de ton texte initial avec le ">" comme séparateur :
1ère chaine :
Dim mTableau() As String
mTableau = Split(" le numéros vont de (1000>9000)", ">")
donnera
0 : " le numéros vont de (1000"
1 : "9000)"
Pour la 2ème chaine :
Dim mTableau() As String
mTableau = Split(" si numéro > 100 alors", ">")
donnera
0 : " si numéro "
1 : " 100 alors"
Voir aussi Trim (LTrim / RTrim)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Pirotes31
Messages postés37Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention 3 juillet 2015 13 févr. 2009 à 15:09
Re bonjour,
un grand merci pour ta réponse qui va m'être très utile dans mon travail, et grâce à ton aide, je vais peut-être retarder ma date de licenciement... (je n'exagère pas tant que cela malheureusement).
Heureusement qu'il y a des gens comme toi pour partager le savoir.
Encore un grand merci du fond du coeur. :-)
Pirotes31.