OVH Cloud OVH Cloud

Lire un fichier texte

8 réponses
Avatar
Olivier Courrillaud
Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci

8 réponses

Avatar
papou
Bonjour
Va voir chez Frédéric sur le lien vers "système, base de registre", etc..
http://frederic.sigonneau.free.fr/

Cordialement
Pascal

"Olivier Courrillaud" a écrit dans le message de
news:
Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci





Avatar
Olivier Courrillaud
j'ai trouvé la fonction SQL.REQUEST qui pourrait me dépanner mais je
n'arrive pas à la faire fonctionner avec comme source de données un fichier
Texte; J'ai créé un DSN mais marche pas.... peut être une erreur de syntaxe
:

=SQL.REQUEST("DSN=testTextOdbc;";A5;2;"SELECT VILLE FROM testOdbc.txt WHERE
NOM='toto'";FALSE)

Merci pour votre aide.

"Olivier Courrillaud" a écrit dans le message de
news:
Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci





Avatar
michdenis
Bonjour Olivier,

Voici une procédure qui devrait faire l'affaire. Attention, elle fut testée avec Excel 2003. Je ne sais pas si elle obéit de la même
façon avec les anciennes versions d'excel.

Avant s'exécuter la procédure, tu dois t'assurer d'avoir défini :

A ) La variable "MonFichier" : Le chemin et le nom du fichier texte

B ) Dans la procédure, fais attention à cette ligne de code en adaptant au besoin, le séparateur texte contenu dans ton fichier
texte

Semicolon = Point-virgule
Comma = Virgule
Tab = Tab (existe-t-il un autre mot pour désigner un tab ???)
Space = Espace

C ) La procédure utilise la Feuil1 comme la feuille de destination dans la procédure. Libre à toi d'en choisir une autre ou d'en
créer une nouvelle feuille.


'-------------------------------------------
Sub ImportTexte()

'Importer un fichier texte

Dim MonFichier As String
Dim Sh As Worksheet
Dim Qt As QueryTable

'à définir
MonFichier = "C:Texte.txt"

On Error Resume Next
Set Sh = ThisWorkbook.Worksheets("Feuil1")
With Sh
.Cells.clear
With .Range("A1:A" & .Range("A65356").End(xlUp).Row)
.TextToColumns Destination:=Range("A1"), Semicolon:=True
End With
End With

Set Qt = Sh.QueryTables.Add( _
Connection:="text;" & MonFichier, _
Destination:=Sh.Range("A1"))
Qt.Refresh

Set Sh = Nothing: Set Qt = Nothing
End Sub
'-------------------------------------------


Salutations!





"Olivier Courrillaud" a écrit dans le message de news:
Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci
Avatar
jps
oui : tabulation, michel!!!!
jps (qui essaie le coup de l'éventail NDLR private joke)

"michdenis" a écrit dans le message de news:
O5$
Tab = Tab (existe-t-il un autre mot pour désigner un tab ???)


Avatar
michdenis
Merci JPS.

;-))

Salutations!


"jps" a écrit dans le message de news:
oui : tabulation, michel!!!!
jps (qui essaie le coup de l'éventail NDLR private joke)

"michdenis" a écrit dans le message de news:
O5$
Tab = Tab (existe-t-il un autre mot pour désigner un tab ???)


Avatar
michdenis
Correction : La procédure devrait être celle-ci. Elle fait plus de sens ! ;-)


Bonjour Olivier,

Voici une procédure qui devrait faire l'affaire. Attention, elle fut testée avec Excel 2003. Je ne sais pas si elle obéit de la même
façon avec les anciennes versions d'excel.

Avant s'exécuter la procédure, tu dois t'assurer d'avoir défini :

A ) La variable "MonFichier" : Le chemin et le nom du fichier texte

B ) Dans la procédure, fais attention à cette ligne de code en adaptant au besoin, le séparateur texte contenu dans ton fichier
texte

Semicolon = Point-virgule
Comma = Virgule
Tab = Tab (existe-t-il un autre mot pour désigner un tab ???)
Space = Espace

C ) La procédure utilise la Feuil1 comme la feuille de destination dans la procédure. Libre à toi d'en choisir une autre ou d'en
créer une nouvelle feuille.


'-------------------------------------------
Sub ImportTexte()

'Importer un fichier texte

Dim MonFichier As String
Dim Sh As Worksheet
Dim Qt As QueryTable

'à définir
MonFichier = "C:Texte.txt"

On Error Resume Next
Set Sh = ThisWorkbook.Worksheets("Feuil1")

Set Qt = Sh.QueryTables.Add( _
Connection:="text;" & MonFichier, _
Destination:=Sh.Range("A1"))
Qt.Refresh

With Sh
With .Range("A1:A" & .Range("A65356").End(xlUp).Row)
.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:úlse, Tab:úlse, _
Semicolon:=True, Comma:úlse, Space:úlse, Other:úlse
End With
End With

Set Sh = Nothing: Set Qt = Nothing
End Sub
'-------------------------------------------


Salutations!





"Olivier Courrillaud" a écrit dans le message de news:
Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci
Avatar
Olivier Courrillaud
Merci pour votre aide.
Mais je ne cherche pas à importer un fichier texte dans sa totalité...
Je voudrais me servir de ce fichier comme d'une Table de BD et pouvoir
récupérer une information bien précise (un SELECT nom FROM monFichier WHERE
ID='123456' par exemple)...

Et je ne suis pas forcément super calé en VB c donc pour ça qu'en cherchant
une autre solution, je suis tombé sur la fonction ODBC SQL.REQUEST.
J'ai donc créé un DSN sous Windows avec le Driver "Microsoft Text Driver",
mais la fonction ne me ramène que #VALEUR ou bien #N/A !!!

Voici une de mes syntaxes :
SQL.REQUEST("DSN=textOdbc";$C$2;2;"SELECT nom FROM monFichier WHERE
ID='123456'";TRUE)

Il doit me manquer quelquechose dans le premier argument.

Salut.

"michdenis" a écrit dans le message de news:
O5$
Bonjour Olivier,

Voici une procédure qui devrait faire l'affaire. Attention, elle fut
testée avec Excel 2003. Je ne sais pas si elle obéit de la même

façon avec les anciennes versions d'excel.

Avant s'exécuter la procédure, tu dois t'assurer d'avoir défini :

A ) La variable "MonFichier" : Le chemin et le nom du fichier texte

B ) Dans la procédure, fais attention à cette ligne de code en adaptant au
besoin, le séparateur texte contenu dans ton fichier

texte

Semicolon = Point-virgule
Comma = Virgule
Tab = Tab (existe-t-il un autre mot pour désigner un tab ???)
Space = Espace

C ) La procédure utilise la Feuil1 comme la feuille de destination dans la
procédure. Libre à toi d'en choisir une autre ou d'en

créer une nouvelle feuille.


'-------------------------------------------
Sub ImportTexte()

'Importer un fichier texte

Dim MonFichier As String
Dim Sh As Worksheet
Dim Qt As QueryTable

'à définir
MonFichier = "C:Texte.txt"

On Error Resume Next
Set Sh = ThisWorkbook.Worksheets("Feuil1")
With Sh
.Cells.clear
With .Range("A1:A" & .Range("A65356").End(xlUp).Row)
.TextToColumns Destination:=Range("A1"), Semicolon:=True
End With
End With

Set Qt = Sh.QueryTables.Add( _
Connection:="text;" & MonFichier, _
Destination:=Sh.Range("A1"))
Qt.Refresh

Set Sh = Nothing: Set Qt = Nothing
End Sub
'-------------------------------------------


Salutations!





"Olivier Courrillaud" a écrit dans le message de
news:

Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci






Avatar
michdenis
Bonjour Olivier,

Un fichier texte n'a pas la structure d'une base de données. Personnellement, je n'ai jamais vu (cela ne signifie pas que la chose
n'existe pas) des requêtes (sql) directes exécutées sur un fichier texte visant à extraire un recordset correspondant à un critère
donné. Si tu trouves, publie ta procédure ici et envoie une copie à Misange. ;-)

Cela s'applique aussi à la fonction SQL.REQUEST d'excel.

Cependant, pour résoudre ton problème, tu pourrais utiliser une feuille de calcul (ou une table de l'application Acces) pour
recueillir les données de ton fichier texte et par la suite extraire l'information requise. Excel possède une gamme de fonction
susceptible de faire ce travail.


Salutations!






"Olivier Courrillaud" a écrit dans le message de news: ex3lHf$
Merci pour votre aide.
Mais je ne cherche pas à importer un fichier texte dans sa totalité...
Je voudrais me servir de ce fichier comme d'une Table de BD et pouvoir
récupérer une information bien précise (un SELECT nom FROM monFichier WHERE
ID='123456' par exemple)...

Et je ne suis pas forcément super calé en VB c donc pour ça qu'en cherchant
une autre solution, je suis tombé sur la fonction ODBC SQL.REQUEST.
J'ai donc créé un DSN sous Windows avec le Driver "Microsoft Text Driver",
mais la fonction ne me ramène que #VALEUR ou bien #N/A !!!

Voici une de mes syntaxes :
SQL.REQUEST("DSN=textOdbc";$C$2;2;"SELECT nom FROM monFichier WHERE
ID='123456'";TRUE)

Il doit me manquer quelquechose dans le premier argument.

Salut.

"michdenis" a écrit dans le message de news:
O5$
Bonjour Olivier,

Voici une procédure qui devrait faire l'affaire. Attention, elle fut
testée avec Excel 2003. Je ne sais pas si elle obéit de la même

façon avec les anciennes versions d'excel.

Avant s'exécuter la procédure, tu dois t'assurer d'avoir défini :

A ) La variable "MonFichier" : Le chemin et le nom du fichier texte

B ) Dans la procédure, fais attention à cette ligne de code en adaptant au
besoin, le séparateur texte contenu dans ton fichier

texte

Semicolon = Point-virgule
Comma = Virgule
Tab = Tab (existe-t-il un autre mot pour désigner un tab ???)
Space = Espace

C ) La procédure utilise la Feuil1 comme la feuille de destination dans la
procédure. Libre à toi d'en choisir une autre ou d'en

créer une nouvelle feuille.


'-------------------------------------------
Sub ImportTexte()

'Importer un fichier texte

Dim MonFichier As String
Dim Sh As Worksheet
Dim Qt As QueryTable

'à définir
MonFichier = "C:Texte.txt"

On Error Resume Next
Set Sh = ThisWorkbook.Worksheets("Feuil1")
With Sh
.Cells.clear
With .Range("A1:A" & .Range("A65356").End(xlUp).Row)
.TextToColumns Destination:=Range("A1"), Semicolon:=True
End With
End With

Set Qt = Sh.QueryTables.Add( _
Connection:="text;" & MonFichier, _
Destination:=Sh.Range("A1"))
Qt.Refresh

Set Sh = Nothing: Set Qt = Nothing
End Sub
'-------------------------------------------


Salutations!





"Olivier Courrillaud" a écrit dans le message de
news:

Bonjour,
je cherche à lire le contenu d'un fichier texte à partir d'Excel via odbc
par exemple; Est-ce que est possible et comment je dois m'y prendre.

Merci