Lire ligne paire fichier texte pour le faire afficher dans textbox [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
-
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
-
Bonjour je cherche a faire afficher dans un textbox les lignes paires d'un fichier txt. es ce que quelqu'un peut m'aider svp?

merci

doum2009

9 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
fort bien, si tu souhaites te contenter d'afficher ton tabeau dans une zone de texte, pas de souci
y'a t'il donc des points qui te coincent encore, dans la réalisation de ton programme ?


le code de Supra3000 me gène, personnellement. Il fonctionne, mais est maladroit.

- Il faut minimiser les accès au disque dur, et lire, si possible le fichier d'un coup, ou par passes de taille raisonnable. Line Input est même catastrophique en terme de performances, puisque VB cherche la fin des lignes lues.
- Il ne faut pas travailler en direct, dans le textbox. En effet, celui-ci va se redessiner pour chaque ligne ajouter. Il faut travailler avec une variable, et l'afficher une fois le chargement terminé
- Il faut éviter de mettre #1 pour le canal de fichier. Enfin, pas d'autorité. Il faut prendre l'habitude de demander un numéro de canal libre (fonction FreeFile)
- While...Wend est l'ancienne syntaxe de Do While...Loop ou Do Until...Loop, etc
Nouvelle syntaxe a privilégier.

une fois nettoyé, on obtient :

Dim iFile As Integer
Dim xsLignes() As String
Dim i As Long
Dim sBuffer As String
'# On demande un canal de fichier libre
iFile = FreeFile
'# On ouvre le fichier en lecture de texte
Open "C:\a.txt" For Input As iFile
'# On place tout le contenu du fichier dans un tableau de chaines
'# Le découpage (Split) sera opéré sur les sauts de lignes (vbNewLine)
xsLignes = Split(Input(LOF(iFile), iFile), vbNewLine)
Close iFile

'# On ne prend ni la ligne 0 ni la ligne 1
'# Ubound indique l'index max du tableau.
For i = 2 To UBound(xsLignes)
'# Si ma ligne est paire...
If (i And 1) = 0 Then
'# On ajoute la ligne dans le buffer
sBuffer = sBuffer & xsLignes(i) & vbNewLine
End If
Next i

'# On affiche le buffer
Text1.Text = sBuffer
Messages postés
159
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
8 janvier 2010
2
Oui c'est très facile mais mais ton textbox est mieux d'être gros ou ton fichier texte très petit =p
Exemple:

chemin = "C:\lepath\de\ton\fichier.txt" 'chemin du fichier
estpaire = True 'savoir si une ligne est paire, par défault 0 est paire

Open chemin For Input As #1
  While EOF(1) = False
    Line Input #1, LigneSuivante ' la variable ligne suivante contient ta ligne
   if estpaire = true then ' Si la ligne est paire
      TextBox1.Text = TextBox1.Text & LigneSuivante
      estpaire = false ' la prochaine ligne est inpaire
   else
      estpaire = true ' la prochaine ligne est paire
   End if
   Wend
Close #1
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009

Bonjour !


je tenais a vous remercier pour la réponse que vous m'avez fourni .


J'aurais par contre 2 autres petites question si cela ne vous pose pas problème.


C'est que je veux garder les 2 premieres lignes du texte et ensuite garder seulement les lignes paires...


et mon autre question serais:


Comment selectionner une colonne du texte(parce que mes données sont en colonne)
et dans ce cas ci je ne voudrais pas les 2 premieres lignes mais seulement ajouter une indication de la colonne( ex: température)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
"selectionner une colonne de texte"

impossible, faut passer par une grille.

un MsFlexgrid
un listView en mode report
un datagrid
...

mais certainement pas un textbox.

ca n'a rien de compliquer à mettre en place, suffit de se relever un minimume les manches.

a quoi ressemblent tes données ?
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009

ce sont des relevées météorologiques en colonne dans un fichier txt  mais je vous dis que je lai fais avec un textbox avec la solution de  supra3000( J'ai mis multiligne a enable alors tout rentre et sa marche super bien).
doum2009
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
Bonjour, Renfield,

Tu ne crois pas qu'un step 2 te permettrait d'éviter le contrôle de parité ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
certes ^^

j'avais pas songé a cela, honte sur moi

donc:

For i = 2 To UBound(xsLignes) Step 2
'# On ajoute la ligne dans le buffer
sBuffer = sBuffer & xsLignes(i) & vbNewLine
Next i
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Ouuhhhh !
(ptdr, amicalement)
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009

merci renfield!

doum2009