Lire ligne paire fichier texte pour le faire afficher dans textbox

Résolu
doum2009 Messages postés 4 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 13 février 2009 - 12 févr. 2009 à 20:39
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

9 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2009 à 09:27
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
3
Supra3000 Messages postés 159 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 8 janvier 2010 2
12 févr. 2009 à 22:19
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
0
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 à 01:20
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)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2009 à 08:54
"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 ?
0

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

Posez votre question
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 à 08:59
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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
13 févr. 2009 à 10:21
Bonjour, Renfield,

Tu ne crois pas qu'un step 2 te permettrait d'éviter le contrôle de parité ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2009 à 10:31
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 févr. 2009 à 16:44
Ouuhhhh !
(ptdr, amicalement)
0
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
merci renfield!

doum2009
0
Rejoignez-nous