Comment connaitre le nombre de lignes d'un fichier texte?

Résolu
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011 - 7 avril 2008 à 13:44
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 - 7 avril 2008 à 15:12
Bonjour ami(e)s programmeurs et programmeuzes,

Alors voila j'aurai voulu savoir si il existait une fonction en VBA pour connaitre le nombre de lignes écrites dans un fichier .TXT.

En fait mon fichier texte ne doit pas exceder 50 lignes, au départ je pensais copier tous le contenu du fichier dans un tableau excel, compter le nombre de ligne dans excel, supprimmer les lignes au dessus de 50 puis mettre le tous dans le fichier TXT.

Est ce qu'il ya plus simple?

5 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 avril 2008 à 14:59
Bonjour,

Les exemples ne manquent absolument pas sur ce forum !

Charger en mémoire la totalité du fichier texte
Fairee un split (sur vbcrlf) de cette variable ===>> Array ===>> tu réécris ton fichier texte en y écrivant les 50 premiers index de ton Array.
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
7 avril 2008 à 13:58
bonjour

pourquoi programmer quelque chose qui ne servira plus si ce n'est pas assez répétitif , car j'ai du mal à croire que l'on supprime les 50 premières lignes d'un fichier texte lorsqu'il y en a plus de 50 (au fait au dessus c'est les premières ou c'est au delà de)
Si c'est pour quelques fois , un éditeur de texte qui numérote les lignes n'est t'il pas suffisant, pourquoi pas utiliser Notepad++




 
0
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
7 avril 2008 à 14:20
J'ai pas trop compris ta réponse, donc t'a pas du comprendre ma question XD

Si dans un fichier texte j'ai 53 ligne de texte, j'aimerais supprimer les lignes au desuus de 50 (c'est a dire les lignes 51, 52, 53), mais le chiffre a peu d'importance.

De plus ce n'est pas pour quelque fois et j'ai besoin de le savoir en VBA.

Pour l'instant je fait le code que j'ai annoncé plus haut (lire ligne apres ligne avec un temoin et supprimer au dessus, le tout en ayant copié les lignes dans un fichier excel).

Mais j'aurais voulu savoir si il n'existe pas une fonction toute faite qui fasse ça (genre une fonction qui utilise un pointeur sur ligne)
0
cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
7 avril 2008 à 15:08
Donc c'est bien ce que je pensais, il faut faire sortir toutes les lignes, mais je voyais ca un peu plus compliqué mais en fait dans ma tete j'inversait l'algo :

Bref ce que tu me dit la va beaucoup m'aider, merci beaucoup jmfmarques=)
0

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

Posez votre question
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
7 avril 2008 à 15:12
Je devrais vous laisser  faire le code, je ne l'ai pas testé donc à espérer que vous sachiez remplacer le nom du fichier dans la procédure main
Surtout qu'il faudrait que j'apprenne à faire cela autrement qu'en VB
je pense à la programmation PowerShell qui est un script en ligne de commande
http://fr.wikipedia.org/wiki/Windows_PowerShell

Sub Main
Dim CompteLignes as long
CompteLignes=CompterNomLigne("c:\...\monfichier.txt")
MsgBox ComptesLignes
if CompteLignes>50 then
Call TronquerFichier("c:\...\monfichier.txt",50)
End If
En sub

Function CompterNombreLigne(MonFichier as string) as Long
On error goto err1
dim i as long
open MonFichier For Input as #1
While not EOF(1) and i<Ligne
line input #1, MaLigne
i=i+1
Wend
Close #1
CompterNombreLigne=i
err1:
End Sub


Sub TronquerFichier(MonFichier as string,Ligne as Integer)
On error goto err
dim i as integer
Dim MonFichier2 as string
i=1
open MonFichier For Input as #1
open MonFichier2 For Output as #2
While not EOF(1) and i<Ligne
line input #1, MaLigne
print #2, MaLigne
i=i+1
Wend
Close #2
Close #1
err:
End Sub
0
Rejoignez-nous