Récupérer qu'une partie d'une chaîne dans un fichier

Résolu
wapit Messages postés 26 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 25 juillet 2005 - 3 juin 2005 à 16:31
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008 - 6 juin 2005 à 12:17
Bonjour,

J'ai créé une appli qui va chercher dans un fichier une chaîne pour la réutiliser plus tard.
voilà comment se présente une ligne type de ce fichier :
" IFSR06 01.06 03/11/05 14:06 24 24 0 IS02" .
Je voudrais ne récupérer que la valeur "IFSR06".
Comment puis-je m'y prendre?
Cordialement,

14 réponses

wapit Messages postés 26 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 25 juillet 2005
6 juin 2005 à 08:58
Merci à tous mais voilà la solution que j'ai trouvé :


While Not EOF(2)
Line Input #2, Chaine

For i = 1 To 80
If Mid(Chaine, i, 1) <> " " Then
Exit For
End If
Next

For j = i To 8
If Mid(Chaine, j, 1) = " " Then
Exit For
End If
Next

Nom_module = Mid(Chaine, i, j - 1)

Print #1, DEST; Trim(Nom_module); DOT; EXT; " "; PDS; "("; Trim(Nom_module); ")"


Wend

@ bientôt!
3
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
3 juin 2005 à 16:45
Une fois que tu récupère la chaine dans une variable disons Chaine

Tu dis que tu ne veux que les 6 premiers caractères en partant de la gauche

Résultat = Left(Chaine,6)
TBBUIM
0
wapit Messages postés 26 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 25 juillet 2005
3 juin 2005 à 16:49
Le problème est que la partie que je veut récupérer n'a pas la même longueur sur toutes les lignes! ex :

COPYPATE 01.03 04/07/12 14:39 67 70 0 IS46
COPYPOLD 01.21 05/05/30 09:39 70 63 0 IS46
COPYPOLU 01.18 05/05/30 09:40 80 63 0 IS46
COPYPOLX 01.16 05/05/30 09:40 80 63 0 IS46
COPYPOLY 01.15 05/05/30 09:40 80 63 0 IS46
DELPARD 01.13 05/05/12 14:34 57 61 0 IS10
DELPOLD 01.51 05/05/30 09:40 181 177 0 IS46
DEVHV 01.12 03/10/16 19:52 31 24 0 IS02
DEVJMO 01.14 04/02/24 10:51 31 24 0 IS47
DEVTFA 01.13 03/10/16 19:52 31 24 0 IS02
DEVV12 01.03 05/03/25 16:07 32 31 0 IS02
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
3 juin 2005 à 16:54
Salut,

si tu as quelquechose d'équivalent à la méthode Split() en.net, tu fais un 'Split' sur le caractète tabulation.

@+
0

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

Posez votre question
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
3 juin 2005 à 16:54
Bonjour,

Le truc a faire et de trouve un point commun entre tout. Comme dans ton exemple je dirais que le mot commence au debut et fini par l'espace.

Faut tjs cherche des points de reference pour des recherche de la sorte.

@++
[Gally Home Corp]
0
wapit Messages postés 26 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 25 juillet 2005
3 juin 2005 à 16:57
J'y ai pensé, mais je ne sais pas comment faire pour récupérer le premier caractère non blanc et qu'il s'arrête au premier caractère blanc suivant!
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
3 juin 2005 à 17:11
Lut,
Petit bout de code à adapter ....
Private Sub Command1_Click()
Dim str As String
Dim Tabl


str = " IFSR06 01.06 03/11/05 14:06 24 24 0 IS02"
str = Trim(str)
Tabl = Split(str, " ")


For i = 0 To UBound(Tabl) - 1
If Tabl(i) <> "" Then
Label1.Caption = Tabl(i)
Exit For
End If
Next
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
3 juin 2005 à 17:21
Bonjour,



Private Sub Command1_Click()

Dim Str1

Str1 = " Bonjour "

If Not Empty Then

Str1 = Replace(Str1, " ", "")

Text1 = Str1

End If

End Sub

jpleroisse
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
3 juin 2005 à 17:36
salut
le split reste la meilleur des méthodes, en .net ou en vb pour ton cas, le tout reste a savoir quel est le spéarateur entre chaque "sous-chaine" en exemple et considérant que le séparateur est un vbtab :
************************
dim Machaine as string
Machaine = " COPYPATE 01.03 04/07/12 14:39 67 70 0 IS46"

dim MonSplit() as string
Monsplit = split(Machaine, vbtab)

' dans ton cas la 1ere chaine aura une valeur vide donc il faut que tu récuperes la 2eme chaine c'est a dire Monsplit(1)

label1.caption = Monsplit(1)
****************************
si par ailleur le séparateur est une chaine de 11 "espaces vides", le split aura cette forme (c'est juste un exemple) :
Monsplit = split(Machaine, " ")

j'espère avoir répondu au mieux a ta question.

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
4 juin 2005 à 14:54
Salut,

Si l'exemple que tu as donné est bien la structure de ton fichier, j'ai remarqué que la partie de la chaine que tu veux récupérer commence au 12ème caractère et a une longueur de 23 (en comptant les espaces).
Dans ce cas, 2 solutions :

TaSousChaine = Trim(Mid(s, 12, 23))
ou
TaSousChaine = Replace(Mid(s, 12, 23)," ","") si tu n'as pas d'espaces dans ce que tu veux récupérer par ex : copy pate au lieu de copypate.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
4 juin 2005 à 14:56
J'ai oublié de dire que s est ta chaîne complète mais je pense que tu l'auras compris.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
4 juin 2005 à 15:03
Pour les amateurs du split, dans ce cas précis et s'il y a TOUJOURS des espaces devant la sous-chaine que tu veux récupérer, il y a :

TaSousChaine = Split(Trim(s), " ")(0)

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
6 juin 2005 à 11:48
Bonjour,

J'ai une petite Sub qui peu t'etre utile pour cela...

Public Sub StringDecoupe(ByVal strLine As String, ByVal strSeparator As String, ByRef strResult() As String)
' DECLARATION DES VARIABLES.
Dim lngI As Long ' VARIABLE TEMPORAIRE.
Dim lngJ As Long ' VARIABLE TEMPORAIRE.
Dim lngT As Long ' VARIABLE TEMPORAIRE.
Dim lngU As Long ' VARIABLE TEMPORAIRE.


' INITIALISATION DU TABLEAU DE RESULTAT.
ReDim lngResult(&H1 To &H1)


' DECOUPE DE LA CHAINE DE CARACTERE.
lngJ = &H1
For lngI = &H1 To Len(strLine) Step &H1
If Mid$(strLine, lngI, Len(strSeparator)) = strSeparator Then
lngU = lngU + &H1
ReDim Preserve strResult(&H1 To lngU)
strResult(lngU) = Mid$(strLine, lngJ, (lngI - &H1) - (lngJ - Len(strSeparator)))
lngJ = lngI + Len(strSeparator)
End If
Next lngI
If Right(strLine, Len(strSeparator)) <> strSeparator Then
lngU = lngU + &H1
ReDim Preserve strResult(&H1 To lngU)
strResult(lngU) = Mid$(strLine, lngJ, Len(strLine) - (lngJ - Len(strSeparator)))
End If


End Sub

Elle decoupe te chaine de caractere en fonction de separteur et met tout dans un tableau.

@++
[Gally Home Corp]
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
6 juin 2005 à 12:17
Gally, j'ai l'impression que tu as refait un split a ta manière non ? puis parcourir chaque caractere pour trouver les séparateurs, j'ai pas l'impression que ce soit la meilleur méthode, car tu peux le trouver aussitot dès ta premiere focntion.

Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n
0
Rejoignez-nous