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

Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
- - Dernière réponse : doum2009
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
- 13 févr. 2009 à 17:33
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
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
59
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
160
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
8 janvier 2010
2
0
Merci
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
Commenter la réponse de Supra3000
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
0
Merci
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)
Commenter la réponse de doum2009
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
59
0
Merci
"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 ?
Commenter la réponse de Renfield
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
0
Merci
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
Commenter la réponse de doum2009
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
0
Merci
Bonjour, Renfield,

Tu ne crois pas qu'un step 2 te permettrait d'éviter le contrôle de parité ?
Commenter la réponse de jmf0
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
59
0
Merci
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
Commenter la réponse de Renfield
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
0
Merci
Ouuhhhh !
(ptdr, amicalement)
Commenter la réponse de cs_Jack
Messages postés
4
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
13 février 2009
0
Merci
merci renfield!

doum2009
Commenter la réponse de doum2009