Problème : extraire données d'un fichier sequentiel

Résolu
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 26 mai 2011 à 09:35
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 26 mai 2011 à 16:18
Bonjour,

J'ai a ma disposition un fichier texte dans lequel sont référencés des articles. A chaque ligne correspond un article. J'ai la structure de tous les champs. Je m'explique : je sais par exemple que sur chaque ligne, de la position 2 à la position 3, j'ai une lettre correspondant a l'article, et de la position 200 à 210 j'ai le prix. Je connais aussi la structure de tous les autres champs mais ils ne me sont pas nécessaires. Je cherche juste a extraire quelques infos pour chaque ligne de produit et tout mettre dans un tableau tel que

A | 200
D | 300
E | 400


J'utilise visual basic, après de nombreuses recherches, j'ai trouvé un code :

Dim T() as string
...
Open "C:\Monfichier.txt" As #1 For Input
i = -1
While Not Eof(1)
  i = i + 1
  Redim Preserve T(i)
  Line Input #1, T(i)



Cependant, visual studio ne connais pas "open", j'ai donc opté pour :

Dim i As Integer
        Dim T(i) As String


        My.Computer.FileSystem.OpenTextFileReader("C\catalogue.txt")
        i = -1
        While Not EOF(1)
            i = i + 1
            ReDim Preserve (i)
            LineInput(1), T(i)

        End While


Mais VB m'indique : "Erreur 1 Les instructions 'ReDim' requièrent une liste entre parenthèses des nouvelles limites de chaque dimension du tableau. "


Auriez vous une idée ou une solution qui pourrait m'expliquer ou est mon erreur et comment pourrais je exploiter ce fichier ??

Cordialement,

27 réponses

Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
26 mai 2011 à 14:44
J'ai réussi a afficher les données via une messagebox :)

Cependant je ne trouve toujours pas commment sont indexés ces élements. car je vais avoir besoin de le selectionner un par un.

A la référence du produit je vais chercher dans une BDD ce meme produit, puis une fois trouvée, j'enregistre le prix dans ma list correspondant au produit, pour l'ajouter dans la BDD...
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 mai 2011 à 14:47
je n'ai pas compris ce que tu veux faire ?
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
26 mai 2011 à 14:55
Par exemple si j'etais passé par la méthode des tableaux :

Je veux savoir la référence de l'article qui est a la 3eme position dans le tableau => T(3) et j'obtiens A.

En passant par les listes je n'arrive pas a afficher juste la référence du produit situé a la 3ème position par exemple.
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
26 mai 2011 à 15:29
Ah oui, les deux opérateurs fonctionnent ('&' et '+') ;)

Par contre qu'est-ce qui ne te convient pas avec ma méthode ?
Et quel est le souci avec celle de ShayW qui n'est pas bien différente (juste un double parcours) ?
Pour accéder à un élément i d'une List lst il suffit de faire lst(i). Ce qui donne par exemple pour avoir l'attribut article d'un lesdetails : lst(i).article
0

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

Posez votre question
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
26 mai 2011 à 15:40
Vos deux codes fonctionnent cependant il est toujours plus optimisé et lisible d'utiliser des procédures dans un code. J'ai donc opté pour le code de ShayW mais je n'arrive pas a acceder à "element(3).prix" et VB me met comme erreur :

"Erreur 1 La structure 'Test.Form1.lesdetails' ne peut pas être indexée, car elle n'a pas de propriété par défaut."

Merci à tous les deux pour votre aide
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
26 mai 2011 à 15:45
Je te donne du code, à toi de l'agencer comme tu veux, je vais pas non plus t'envoyer un projet architecturé :p

Pour ton souci c'est simplement que tu te trompes de variable.
La List qui contient les instances de lesdetails se nomme listdetails dans le code de ShayW. Il faut donc écrire : listdetails(3).prix

;)
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
26 mai 2011 à 15:47
Et lorsque j'utilise msgbox(listedetails(3).prix), j'ai bien un rpix qui s'affiche mais j'ai beau cliquer mille fois sur le bouton ok, le prix apparait toujours. Ce n'est pas un probleme vu que je n'ai pas besoin de faire apparaitre le résultat via l'application mais j'aurais bien aimer comprendre pourquoi

Merci à tous les deux de m'avoir répondu rapidement et pertinement !
0
Rejoignez-nous