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

Messages postés
309
Date d'inscription
jeudi 10 janvier 2008
Dernière intervention
27 octobre 2011
- 7 avril 2008 à 13:44 - Dernière réponse :
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
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?
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- 7 avril 2008 à 14:59
3
Merci
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.

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de jmfmarques
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Dernière intervention
2 juin 2016
- 7 avril 2008 à 13:58
0
Merci
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++




 
Commenter la réponse de cs_loulou69
Messages postés
309
Date d'inscription
jeudi 10 janvier 2008
Dernière intervention
27 octobre 2011
- 7 avril 2008 à 14:20
0
Merci
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)
Commenter la réponse de cs_faucheuse
Messages postés
309
Date d'inscription
jeudi 10 janvier 2008
Dernière intervention
27 octobre 2011
- 7 avril 2008 à 15:08
0
Merci
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=)
Commenter la réponse de cs_faucheuse
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Dernière intervention
2 juin 2016
- 7 avril 2008 à 15:12
0
Merci
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
Commenter la réponse de cs_loulou69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.