Extraire une chaine d'un fichier et remplir un tableau
cs_rober
Messages postés86Date d'inscriptionvendredi 29 novembre 2002StatutMembreDernière intervention21 septembre 2010
-
18 juil. 2009 à 18:09
VBsearch
Messages postés50Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention22 août 2009
-
19 juil. 2009 à 15:10
Bonjour,
Je voudrais ouvrir un fichier le lire et extraire une chaine comprise entre 2 chaine et la renvoyer dans un tableau qui est sur ma form.
Merci pour votre aide VB6
-------------------------------
|DESIGNATION|AXE INTERMEDIAIRE|
-------------------------------
|NUMPLAN | |
-------------------------------
|FOURNISSEUR| |
-------------------------------
J'ouvre le fichier avec l'instruction:
Open Dir1.Path & "/" & File1.FileName For Binary As #1
La chaine a recuperer est:
AXE INTERMEDIAIRE
le critere de recherche avant est:
3 26 DESIGNATION
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 juil. 2009 à 19:08
Salut
On ne va pas te faire ton programme.
Qu'as-tu écrit pour l'instant ?
Faut commencer par le début : Sais-tu comment "lire une ligne", l'une après l'autre ?
--> Charge quelques sources qui parlent de lecture de fichier + l'aide de VB (il y a des exemples avec la commande Open) et tu sauras comment faire.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
VBsearch
Messages postés50Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention22 août 2009 19 juil. 2009 à 02:32
Salut
Une autre façon de faire est d'utiliser la fonction Split qui te renvoie un tableau contenant toutes les chaînes comprises en les délimiteurs "|" tels que décrit dans ta question.
Tu met le contenu de ton fichier dans une variable que tu affecteras par la suite à un TextBox par exemple ou tu la passeras à la fonction Split. Voici du code qui pourrait te servir tu dois bien sûr l'adapter à ton besoin:
Sub OpenFile(ctlDest As RichTextBox, FileName as String)
Dim fIndex As Integer, ff%
On Error Resume Next
' Ouvre le fichier sélectionné.
ff = FreeFile
Open FileName For Input As #ff
If Err Then
MsgBox "Impossible d'ouvrir le fichier: " + FileName, vbExclamation
Exit Sub
End If
Text1.Text = Input(LOF(ff), ff)
Close #ff
Text1.Refresh
End Sub
Private Sub FillList(lst As ListBox)
Dim tb() As String
tb = Split(Text1.Text, vbNewLine) ' le délimiteur est CR(Retour Chariot)
For I = LBound(tb()) To UBound(tb())
List1.AddItem tb(I)
Next I
End Sub
J'espère avoir pu t'aider.
cs_rober
Messages postés86Date d'inscriptionvendredi 29 novembre 2002StatutMembreDernière intervention21 septembre 2010 19 juil. 2009 à 11:06
Merci pour ta reponse
J'arrive bien a avoir l'affichage dans le testbox mais je ne vois pas comment lui dire de chercher entre la chaine de recherche avant et la chaine de recherche apres et avoir l'info dans listbox
Rober
Vous n’avez pas trouvé la réponse que vous recherchez ?
VBsearch
Messages postés50Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention22 août 2009 19 juil. 2009 à 12:56
Salut
Reformule ta question de façon plus claire.
Ton exemple manque un peu de clarté, sinon que veulent exactement dire les nombres avec :
recherche avant 3 26 et recherche après 3 30-1?
Essaie d'être plus précis et on pourra peut-être t'aider.
cs_rober
Messages postés86Date d'inscriptionvendredi 29 novembre 2002StatutMembreDernière intervention21 septembre 2010 19 juil. 2009 à 14:01
le fichier est un fichier CAO 3d.
Lorsque je crés mes fichiers 3d il y a des parametres que je renseigne (dans ce cas le parametre est :DESIGNATION et la valeure est:AXE INTERMEDIAIRE)
le probleme est que dans l'ecriture du fichier il y a plusieur fois DESIGNATION.pour pouvoir extraire la bonne valeur de designation je cherche: "3 26 DESIGNATION" et je sais que la valeur se trouve apres "3 30 -1" (c'st toujours la meme syntaxe et position).
Je ne peux pas faire ma recherche apres la valeur "3 26" car tous les parametres se trouvent apres la valeur "3 26".
En realite je pense que je dois chercher la valeur de mon parametre entre la chaine avant :
"3 26 DESIGNATION 3 27 4 28 51 4 29 "
et la chaine apres :"3 30 -1"
voila
pour l'instant je ne prend en compte que le parametre designation mais je voudrais l'etendre a d'autres parametres.
Merci pour votre aide je suis debutant et je comprends que mes questions puissent vous paraitre basiques
VBsearch
Messages postés50Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention22 août 2009 19 juil. 2009 à 15:10
Salut
Dans ce cas, tu pourras effectuer une recherche conditionnelle sur tous les éléments de la ListBox c-à-d :
Dim Ind%,MyStr$,Result$
For ind%=0 to List1.ListCount-1
If MyStr="mets ce que tu veux chercher ici" and
MyStr<>"mets ici ce que tu veux exclure" Then
Result=List1.List(Ind)
End If
Next Ind
et tu mettras le résultat soit dans un tableau(s'il y en a plusieurs) ou le traiter directement dans ton prog