Extraire une chaine d'une autre pour pouvoir filtrer

Résolu
MaxSarthe
Messages postés
7
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006
- 17 mars 2006 à 09:28
MaxSarthe
Messages postés
7
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006
- 17 mars 2006 à 17:02
Bonjour a tous,

Je dois reussir a filtrer une liste de string incluse dans un fichier excel.
Les strings se presentent sous cette forme:
tot bl 2 a24 blabla
top bl 2 b30 blabla
---
tof bl 3 b24,4 blabla
tou bl 2 a20 blabla

Et je cherche a les filtres suivant le chifre qui suit la lettre a ou b. Du genre ceux dont le 24<chiffre<26

Je me suis dis que je devrais extraire la string qui represente ce chiffre (qui se trouve toujours a la meme position) .
Puis convertir la string en double.
Mon probleme c'est que comme la taille du chiffre varie je n'y arrive pas.

Pourriez vous m'aidez svp jedebute et je galere a fond! (si vous savez comment faire ou si ous connaissez un bon tutoriel a ce sujet)

5 réponses

jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
17 mars 2006 à 09:44
Salut, en utilisant la fonction Split et la fonction Mid tu devrais pouvoir t'en sortir

Regarde si ce petit exemple peut t'aider.

Dim Ex As String
Dim Resultat As String
Ex = "tot bl 2 a24 blabla"
Resultat = Split(Ex, " ")(3)
Resultat = Mid(Resultat, 2)
MsgBox Resultat

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
cs_DURANDO
Messages postés
34
Date d'inscription
jeudi 16 février 2006
Statut
Membre
Dernière intervention
21 mars 2006

17 mars 2006 à 09:58
salut,

"Mon probleme c'est que comme la taille du chiffre varie je n'y arrive pas."

Je suppose que c'est le nombre de digits qui pose pb exemple :

- b128

- b2



Pour trouver l'emplacement du premier bxxx:

dim s as string ' C'est ta chaine

PosB = Instr(1,s,"b")

'pour vérifier que ce qui suit b est un chiffre:



if mid(s,posb+1,1)>="0" and mid(s,posb+1,1)<="9" then msgbox "c'est un chiffre"



'pour enlever tout le début de la chaine dont tu n'a pas besoin :

s = mid(s,PosB+1)



Donc, une fois trouvé le b suivi d'un caractère, tu fait une boucle pour trouver la fin du nombre

do until (mid(s,PosB+i)<"0" or mid(s,PosB+i)>"9")

i= i +1

loop



Convertir la chaine en integer

val(mid(s,PosB+1,i-PosB-1)



Avec tout ca ca devrait d'aider.



Si pb n'hésite pas à demander.




C'est pas parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.
0
MaxSarthe
Messages postés
7
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006

17 mars 2006 à 10:40
Merci beaucoup ca marche nikel il ne reste plus qu'a convertir le resultat en double le metre dans un tableau et actioner le filtre je vous tiens au courant sur l'evolution du projet.

Le plus enervant c'est que quand on voit les solutions proposees on se trouve tout d'un coup tres con.. ;-p

Merci encore!
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
17 mars 2006 à 10:58
Re,

Si ca peut te reconforter tu n'as qu'a te dire que nous somme tous forcement passer par la.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MaxSarthe
Messages postés
7
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
20 mars 2006

17 mars 2006 à 17:02
Oui ce sont des moments ou l'entraide est primordiale.
0