Comment connaitre le nombre de lignes d'un fichier texte? [Résolu]

Signaler
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
-
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

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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.
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
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++




 
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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)
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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=)
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
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