lecture de fichiers texte

T

Tom

Guest
bonjour,

je desire faire un recap de valeurs contenues dans des fichiers *.txt
le nombre et leurs noms est variables

j'ai donc fais une petit requete sql mais j'ai un probleme au niveau du

sql ='select * from ' & fichiers & ' Ici je ne sais pas quoi mettre car je voudrais tout recuperer j'ai testé avec 'where etc...' mais pas concluant
y a t il une fonction ' all ' ou apparanté qui permettrai de tout recuperer

merci d'avance
 

MichelXld

XLDnaute Barbatruc
bonjour Tom

j'espere que cet exemple pourra t'aider


Code:
Sub importFichierTexte_ADO()
Dim Rc As ADODB.Recordset
Dim cn As String, Chemin As String, Fichier As String
Dim i As Long

Chemin = 'C:\\Documents and Settings\\michel\\dossier\\general\\excel'
Fichier = 'monFichier.txt'

cn = 'Driver={Microsoft Text Driver (*.txt; *.csv)};' & _
'Dbq=' & Chemin & ';Extensions=asc,csv,tab,txt'

Set Rc = New ADODB.Recordset
Rc.Open Source:='SELECT * FROM ' & Fichier, ActiveConnection:=cn

If Not Rc.EOF Then
For i = 0 To Rc.Fields.Count - 1 'recuperation entetes
Cells(1, 1).Offset(0, i) = Rc.Fields(i).Name
Next
Range('A2').CopyFromRecordset Rc
End If

Rc.Close
End Sub

sur mon poste cela fonctionne en utilisant le ';' point virgule comme séparateur dans le fichier texte . je n'ai pas trop eu le temps de chercher comment parametrer l'utilisation d'autres separateurs

sinon , sans utiliser la methode 'ADO' , il est aussi possible de lire un fichier texte en utilisant la fonction Input


bon apres midi
MichelXld

Message édité par: michelxld, à: 15/09/2005 13:46
 
T

tom

Guest
salut michel xld

deja merci de ta repondre

bon j'ai un message d'erreur [microsoft][pilote odbc texte] erreur de syntaxe ds la clause FROM

moi de mon coté j'avais bidouillé un truc mais j'avais un erreur pilote ISAM je pense que s'est lié a mon HRD=no mais je ne sais pas trop en fin pas grave

ensuite pour de donner plus de detail le but c'est recuperer des données de plusieurs fichiers txt ( le nombre est variable ) sa c'est dans un premier temps ensuite pour le traitement je verrai plus tard.

merci
 

MichelXld

XLDnaute Barbatruc
bonjour Tom

cela fonctionne tres bien chez moi (Excel2002 & WinXP)
verifies qu'il n'y a pas d'erreur de synthaxe dans la procedure


sinon tu peux aussi essayer ( sans ADO )

Code:
Sub lireFichierTexte()
Dim infosLigne As String
Dim i As Integer, x As Integer
Dim Tableau() As String

Open 'C:\\Documents and Settings\\michel\\excel\\monFichier.txt' For Input As #1
Do While Not EOF(1)
Line Input #1, infosLigne
i = i + 1
Tableau = Split(infosLigne, ';') 'le separateur est le point virgule
For x = 0 To UBound(Tableau)
Cells(i, x + 1) = Tableau(x)
Next
Loop
Close #1
End Sub


bonne journée
MichelXld
 
T

tom

Guest
bonsoir michelXLD

Bon sur la premiere macro rien a faire ça ne fonctionne pas,

par contre pour la deuxieme j'ai ptit probleme avec le Split
le separateur doit etre la tabulation et la sa coince dur
peux tu me rappeler la syntaxe de la tabulation pour le split ?

merci michelXLD
 
T

tom

Guest
re-bonsoir

pour le split tabulation j'ai trouvé

Tableau = Split(infosLigne, Chr(9)) et la ça marche,,, yes

enfin une bonne chose de faite reste plus cas

extraire les bonnes colonnes
remplacer les . par des ,
et trouver les bonnes valeurs

encore merci michelxld
 

MichelXld

XLDnaute Barbatruc
bonjour Tom

si tu dois faire des requetes filtrees dans le fichier texte , la methode ADO serait peut etre mieux adaptée

sinon en restant sur la derniere solution , pour recuperer les infos d'une colonne specifique tu peux directement extraire les donnees du Tableau() , suite au Split

par exemple pour recuperer uniquement les infos de la 3eme colonne du fichier texte ( l'index de la premiere colonne etant à 0)

Tableau = Split(infosLigne, Chr(9))
maValeur = Tableau(2)



pour remplacer les points par des virgules

Tableau = Split(infosLigne, Chr(9))
maValeur = Application.WorksheetFunction.Substitute(Tableau(2), '.', ',')



pour verifier si la bonne valeur existe dans la ligne du fichier texte

Line Input #1, infosLigne
If infosLigne Like '*motClé*' Then
'...


ou directement sur une colonne du fichier

Line Input #1, infosLigne
If Tableau(2) Like '*motClé*' Then
'…



bon week end
MichelXld
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 321
Messages
2 087 245
Membres
103 498
dernier inscrit
FAHDE