lire début fichier ".txt" avant importation?

Risleure

XLDnaute Occasionnel
Bonjour le Forum

Voici en résumé la question du jour : Peut-on lire le début d'un fichier ".txt" avant de commencer son importation?

J'ai un appareil d'essai qui génère des fichiers de données tabulées en ".txt"
J'ai mis au point une macro VBA (avec qqs bouts de code pris sur ce Forum ;) ) qui
- ouvre un explorateur me permettant de ne choisir que des fichiers ".txt"
- importe le dit fichier ".txt" choisi
- met en forme les valeurs (virgule en point, format nombre, titre de colonne,...
- sélectionne des colonnes pour tracer un graphique
- met de belles couleurs au graphique, ...

Come je souhaite mettre cette macro à disposition d'autres utilisateurs, il faut que je lui adjoigne quelques sécurité car si le fichier ".txt" n'est pas un fichier généré par mon acquisition de données mais vulgaire fichier .txt, la macro plante au moment de la génération du graphique.
Donc actuellement je teste si la cellule A1 contient l'entête particulière de mon acquisition de données c'est à dire "xxxx" [highlight]APRES[/code] avoir importé le dit fichier. Je souhaite savoir si Excel saurait lire le début du fichier ".txt" [highlight]AVANT[/code] de commencer l'importation.
Chacune des lignes du fichier débute par "xxxx" voir l'exemple ci dessous

Code:
xxxx	file	2008-1008adx120.TXT
xxxx	date	15.09.2008
xxxx	time	09:57:45
xxxx	application 1 [A1]	two-stage process
xxxx	operator	kt ps
xxxx	checksum	[<-]
xxxx	port	[->]	1	1	1	1	1	1	1	1	
xxxx	adr.[485]	[->]	5	5	5	5	5	5	5	
xxxx	....
Merci pour vos astuces.
 

ROGER2327

XLDnaute Barbatruc
Re : lire début fichier ".txt" avant importation?

Bonjour Risleure
Devant la même difficulté, j'avais contourné la chose en renommant les fichiers .txt avec un autre suffixe (.rog dans mon cas, après m'être assuré qu'il ne trainait pas des milliers de fichiers possédant cette extension). Autrement dit, j'avais créé mon extension personnelle. Voyez si ce peut être une piste...​
Bonne journée.
ROGER2327
 

Risleure

XLDnaute Occasionnel
Re : lire début fichier ".txt" avant importation?

Merci Roger,

C'est une piste... :mad:
Si pas mieux, je continuerai à tester [highlight]APRES[/code] importation mais [highlight]AVANT[/code] de tracer le graphique.

@+
 

Risleure

XLDnaute Occasionnel
Re : lire début fichier ".txt" avant importation?

Re,

Roger à tout hasard, j'ai trouvé ce bout de code MichelXLD qui permet de lire le début d'un fichier Texte et d'afficher un message si le début de la ligne commence par 'XLD'. Je vais tenter de détourner ce code pour lire l'en tête "xxxx" de mes fichiers d'acquisition et si OK j'enclenche l'importation complète.
Code:
'Lire un fichier Texte : boucler sur toutes les lignes du fichier
**********************************************
'Dans l'exemple , un message s'affiche si le début de la ligne commence par 'XLD'

Sub lireFichierTexte()
Dim infosLigne As String
Open 'C:\\\\\\\\fichierTexte.txt' For Input As #1
Do While Not EOF(1)
Line Input #1, infosLigne
If Left(infosLigne, 3) = 'XLD' Then Msgbox infosLigne
Loop
Close #1
End Sub
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : lire début fichier ".txt" avant importation?

bonjour Risleure, ROGER2327,

voici un autre code pour lire un fichier texte.
Code:
Public Sub exemple()
Dim myFso As Object, textFile As Object
Dim textLine As String, textFileName As String

'fichier texte à traiter
textFileName = "E:\aMiki\XLS\test\test.txt"

'ouvrir le fichier texte
Set myFso = CreateObject("Scripting.FileSystemObject")
Set textFile = myFso.OpenTextFile(textFileName)

'lire la première ligne
textLine = textFile.ReadLine
'lire la deuxième ligne
textLine = textFile.ReadLine
'lire la troisième ligne
textLine = textFile.ReadLine
'...

' fermer le fichier
textFile.Close
Set textFile = Nothing: Set myFso = Nothing
End Sub
cela dit, l'idée de Roger est plutôt bonne ;)

a+
 

Risleure

XLDnaute Occasionnel
Re : lire début fichier ".txt" avant importation?

Salut mromain,

Oui l'idée de Roger est bonne mais je ne peux pas intervenir sur la génération du fichier .txt par le prog d'acquisition de données.

Par contre une fois arrangé le code de MichelXLD fonctionne parfaitement mais je me demande si ton code (très proche dans l'esprit mais manipulant des "objets" ) ne serait pas un peu plus solide donc je regarde car l'adaptation à mon pb doit être simple.

Merci @+
 

mromain

XLDnaute Barbatruc
Re : lire début fichier ".txt" avant importation?

bonjour Resleure, Roger2327,

si tu veux utiliser ces objets, et afin de faciliter la programmation, je te conseille de cocher la référence "Microsoft Scripting Runtime" et et de modifier la déclaration des variables comme ça :
Code:
Public Sub exemple()
Dim myFso As [B]FileSystemObject[/B], textFile As [B]TextStream[/B]
Dim textLine As String, textFileName As String
...
...
tu aura l'écriture intelligente (tu vera tous les attributs et les méthode des objets)

quand ton programme est fini, tu peux les re-déclarer en tant qu'Object, cela te permettra de ne pas être obligé d'avoir la référence de cochée pour exécuter la macro.

a+
 

Discussions similaires


Haut Bas