Lire lignes choisies

Résolu
cs_kysid Messages postés 75 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 26 mai 2008 - 14 juin 2006 à 14:17
demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006 - 23 juin 2006 à 13:30
salut et bonne journée tout le monde

on suppose qu'on a ouvert un fichier ce code permet de lire toutes les lignes
et le ajouter à une listbox


    Do While Not EOF(1)
        Line Input #1, maLigne
        Liste.AddItem maLigne
    Loop



ma question est :
comment lire les lignes qu'on veut ;
et pas obligatoirement successives ?
cordialement
kysid

11 réponses

demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006
14 juin 2006 à 14:47
salut
Je te propose de passer par un tableau de variables temporaire:

Dim tabLignes() As String
Dim numLigne As Integer
Dim Ligne As String



ReDim tabLignes(1)


Open "C:\votrefichier.txt" For Input As #1
    While Not EOF(1)
        Line Input #1, Ligne
        ' enregistrement des lignes dans un tableau de variable temporaire
        tabLignes(numLigne) = Ligne
        numLigne = numLigne + 1
        'redimensionnement du tableau
        ReDim Preserve tabLignes(numLigne + 1)
    Wend
Close #1
List1.AddItem (tabLignes(4)) 'par exemple la ligne 4

Qu'est ce que tu en pense?
3
demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006
19 juin 2006 à 08:53
salut
Je ne suis pas en vacance mais je n'ai pas internet chez moi

C'est étonnant que cela affiche autre chose qu'une erreur ?
Je m'explique, à aucun moment vous n'enregistrez la variable dans le tableau

Do While Not EOF(1)
    nbligne = nbligne + 1
    Line Input #1, strLigne
   tabLignes(numLigne) = strLigne
Loop

Dans l'exemple que je vous ai donné j'ai figé volontairement le choix, il suffit de remplacer le 4 dans List1.AddItem (tabLignes(4)) par une variable comme vous l'avez fait ci-dessus :

For numLigne = 0 To nbligne
   List1.AddItem (tabLignes(numLigne))
Next numLigne
3
demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006
14 juin 2006 à 14:54
tu peux remplacer les 2 lignes là...
Line Input #1, Ligne
tabLignes(numLigne) = Ligne
...par celle là...
Line Input #1, tabLignes(numLigne)

ça fait une variable de moin.
0
cs_kysid Messages postés 75 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 26 mai 2008
15 juin 2006 à 18:55
Merci demon_renard 
votre aide est claire et concise 
je vais essayer ces codes ;
si pepin je vais me permettre de revenir à ce topic ;)

cordialement
0

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

Posez votre question
cs_kysid Messages postés 75 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 26 mai 2008
17 juin 2006 à 14:02
salut demon_renard
excuse le nombre de ligne je tiens à etre precis :)
Je sais pas pourquoi j ai afichage de la ligne n+1 quand je met
List1.AddItem (tabLignes(n))
j'ai essayer d'afficher une certaine ligne commençant par des caractéres defini [dans un textbox] mais...
je suis pas arrivé à afficher la ligne que je veux durant l'execution.
parceque le choix ::
List1.AddItem (tabLignes(4))
est figé une fois pour toute.
j ai essayer ça


    Do While Not EOF(1)
    nbligne = nbligne + 1
    Line Input #1, strLigne
Loop


 avec


For numLigne = 0 To nbligne
List1.AddItem (tabLignes(numLigne))
Next


pour avoir au moins ligne par lignes jusqu'à la fin
mais ça donne seulement la 1ére ligne


Moralité mes debut perdurent help please!
0
cs_kysid Messages postés 75 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 26 mai 2008
18 juin 2006 à 20:30
:)
à moins que vous soyez dejà en vaccances.
je prefere pour vous :)
0
demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006
19 juin 2006 à 08:57
argh... une erreur

For numLigne = 0 To nbligne
   List1.AddItem (tabLignes(nbligne)) 'et non pas numLigne
Next numLigne
0
cs_kysid Messages postés 75 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 26 mai 2008
19 juin 2006 à 17:39
salut demon_renard
moi non plus no connextio à la maison
Merci de la correction , Prof.
Je vais appliquer ce code.
Si tu permet , une
      comment aller directement à une ligne commençant par une string particuliére?[qu'on taperais dans texboxe par exemple  ; sorte de Recherche ça dans le fichier.txt ]

Bonne journée
 
0
demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006
20 juin 2006 à 09:13
salut kysid,

Si on m'avait dit qu'un jour je pourrais aider un prof, je l'aurais jamais crue  

Text1 est le nom de la textBox dans laquel on rentre la chaîne à rechercher.
Ce code est à mettre après avoir parcourue le fichier texte donc après la boucle du Not EOF :

For i = 0 To nbligne
  If Mid(tabLignes(i), 1, Len(Text1.Text)) = Text1.Text Then
    List1.AddItem (tabLignes(i))
  End If
Next i

len indique le nombre de caractère dans la textBox
mid("salut",1,2) renvoie les 2 caractères à partir du caractère 1 soit ici "sa"

Dis moi si cela convient ou si il te faut quelque chose de plus pointue au niveau de la recherche dans le fichier texte
0
cs_kysid Messages postés 75 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 26 mai 2008
21 juin 2006 à 18:22
salutdemon_renard 
je viens de copier/coller dans mon usb.
si j ai bien compris
   si la ligne i commence par un bout de chaine correspondant à Text1.Text
   alors ajoute la ligne i à la list1
[]):)
je testerais à la maison
merci
He..! c toi le prof
et le debutant c moi
Bonne journée
0
demon_renard Messages postés 34 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 23 juin 2006
23 juin 2006 à 13:30
c'est bien ça
0
Rejoignez-nous