Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

importation fichier TXT

7 réponses
Avatar
LB
Bonjour,

Je veut importer des fichiers texte du type suivant dans access 2003.
(La premiere ligne du fichiers texte est vide)

"Client";"R=E9f=E9rence";"N=B0 Lot";"R/R";"A/
R";"M100";"M200";"M300";"Densit=E9";"Duret=E9";"Viscosit=E9"
"";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
"xxxx";"yyy";"19766";
10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
"xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
"xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
"xxxx";"yyy";"19769";
10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
"xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0

le code que j'utilise:
DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False

Mon probl=E8me est =E0 partir de la 4 colonne =E0 la derniere, il me les
concidere comme des champs num=E9rique. Cela me supprime les noms des
colonnes, j'en ai besoin pour le reste de mon traitement.

Merci de votre aide.

7 réponses

Avatar
3stone
Salut,

LB wrote:
Bonjour,

Je veut importer des fichiers texte du type suivant dans access 2003.
(La premiere ligne du fichiers texte est vide)

"Client";"Référence";"N° Lot";"R/R";"A/
R";"M100";"M200";"M300";"Densité";"Dureté";"Viscosité"
"";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
"xxxx";"yyy";"19766";
10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
"xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
"xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
"xxxx";"yyy";"19769";
10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
"xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0

le code que j'utilise:
DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False

Mon problème est à partir de la 4 colonne à la derniere, il me les
concidere comme des champs numérique. Cela me supprime les noms des
colonnes, j'en ai besoin pour le reste de mon traitement.



Transfertext est assez rigide...

Si nécessaire, il est plus simple d'importer dans une table
temporaire et puis à l'aide d'une requête de tranférer
dans la table définitive.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Hugues
"LB" a écrit dans le message de
news:
Bonjour,

Je veut importer des fichiers texte du type suivant dans access 2003.
(La premiere ligne du fichiers texte est vide)

"Client";"Référence";"N° Lot";"R/R";"A/
R";"M100";"M200";"M300";"Densité";"Dureté";"Viscosité"
"";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
"xxxx";"yyy";"19766";
10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
"xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
"xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
"xxxx";"yyy";"19769";
10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
"xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0

le code que j'utilise:
DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False

Mon problème est à partir de la 4 colonne à la derniere, il me les
concidere comme des champs numérique. Cela me supprime les noms des
colonnes, j'en ai besoin pour le reste de mon traitement.

Merci de votre aide.


Bonjour,

Essayez de refaire l'import avec l'assistant (fichier->Données
externes->importer) et rechargez le format d'import TEMP_IMPORT (avancé...->
paramètres), modifiez le en précisant que le séparateur décimal est la
virgule et précisez aussi pour chaque colonne le type souhaité.
Comme il y a plus de colonnes en entête que de valeurs, il faut cocher ces
colonnes supplémentaires pour ne pas les importer. Vous pouvez aussi
renommer les colonnes si vous le souhaitez. Sauvegardez le format d'import
et testez. pensez aussi à indiquer que la première ligne contient les
entêtes (le dernier paramètre de votre commande doit être à true)

L'idée de tout récupérer en texte ne vous permettra pas d'exploiter les
données par la suite.

Bon courage

Hugues
Avatar
LB
On 28 avr, 22:23, "3stone" wrote:
Salut,





LB wrote:
> Bonjour,

> Je veut importer des fichiers texte du type suivant dans access 2003.
> (La premiere ligne du fichiers texte est vide)

> "Client";"Référence";"N° Lot";"R/R";"A/
> R";"M100";"M200";"M300";"Densité";"Dureté";"Viscosité"
> "";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
> "xxxx";"yyy";"19766";
> 10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
> "xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
> "xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
> "xxxx";"yyy";"19769";
> 10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
> "xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0

> le code que j'utilise:
> DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False

> Mon problème est à partir de la 4 colonne à la derniere, il me le s
> concidere comme des champs numérique. Cela me supprime les noms des
> colonnes, j'en ai besoin pour le reste de mon traitement.

Transfertext est assez rigide...

Si nécessaire, il est plus simple d'importer dans une table
temporaire et puis à l'aide d'une requête de tranférer
dans la table définitive.

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour,

Je me suis peut etre mal expliquer,
1: j'importe les données du premiere fichier dans une table temporaire
"TEMP_IMPORT"
2: je fait mon traitemment
2a: je recherche les noms des colonnes present et
s'enregistre leur possition.
2b: j'envoie les données dans les tables approviées
3: je supprime le table temporaire.
4: je passe au fichier suivant

jusqu'au dernier. il y a un peu plus de 5000 fichiers à traiter tous
les mois.

Se programme sera utiliser sur différant poste en runtime.
j'ai fait un fichiers schema.ini pour inquer le format des données qui
est le suivant. mais sa ne fonctionne pas.

[Import_MonFichier.txt]
ColNameHeader = False
CharacterSet = ANSI
Format = delimited(;)
textDelimiter="none"
Col1="F1" char width 50
Col2="F2" char width 50
Col3="F3" char width 50
Col4="F4" char width 50
Col5="F5" char width 50
Col6="F6" char width 50
Col7="F7" char width 50
Col8="F8" char width 50
Col9="F9" char width 50
Col10="F10" char width 50
Col11="F11" char width 50

Et comme la premiere ligne des fichier texte est vide je ne peut pas
indiquer l'entete des colonnes.

Remarque: les fichiers texte sont créés automatiquement par un
appareil de mesure. et les colonnes sont différentes d'un contrôl à u n
autre.

Merci à tous.
Avatar
LB
On 28 avr, 22:52, "Hugues" wrote:
"LB" a écrit dans le message denews:6458b019-d
Bonjour,

Je veut importer des fichiers texte du type suivant dans access 2003.
(La premiere ligne du fichiers texte est vide)

"Client";"Référence";"N° Lot";"R/R";"A/
R";"M100";"M200";"M300";"Densité";"Dureté";"Viscosité"
"";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
"xxxx";"yyy";"19766";
10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
"xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
"xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
"xxxx";"yyy";"19769";
10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
"xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0

le code que j'utilise:
DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False

Mon problème est à partir de la 4 colonne à la derniere, il me les
concidere comme des champs numérique. Cela me supprime les noms des
colonnes, j'en ai besoin pour le reste de mon traitement.

Merci de votre aide.

Bonjour,

Essayez de refaire l'import avec l'assistant (fichier->Données
externes->importer) et rechargez le format d'import TEMP_IMPORT (avancé ...->
paramètres), modifiez le en précisant que le séparateur décimal e st la
virgule et précisez aussi pour chaque colonne le type souhaité.
Comme il y a plus de colonnes en entête que de valeurs, il faut cocher ces
colonnes supplémentaires pour ne pas les importer. Vous pouvez aussi
renommer les colonnes si vous le souhaitez. Sauvegardez le format d'impor t
et testez. pensez aussi à indiquer que la première ligne contient les
entêtes (le dernier paramètre de votre commande doit être à true)

L'idée de tout récupérer en texte ne vous permettra pas d'exploiter les
données par la suite.

Bon courage

Hugues



Bonjour,

Je me suis peut etre mal expliquer,
1: j'importe les données du premiere fichier dans une table temporaire
"TEMP_IMPORT"
2: je fait mon traitemment
2a: je recherche les noms des colonnes present et
s'enregistre leur possition.
2b: j'envoie les données dans les tables approviées
3: je supprime le table temporaire.
4: je passe au fichier suivant

jusqu'au dernier. il y a un peu plus de 5000 fichiers à traiter tous
les mois.

Se programme sera utiliser sur différant poste en runtime.
j'ai fait un fichiers schema.ini pour inquer le format des données qui
est le suivant. mais sa ne fonctionne pas.

[Import_MonFichier.txt]
ColNameHeader = False
CharacterSet = ANSI
Format = delimited(;)
textDelimiter="none"
Col1="F1" char width 50
Col2="F2" char width 50
Col3="F3" char width 50
Col4="F4" char width 50
Col5="F5" char width 50
Col6="F6" char width 50
Col7="F7" char width 50
Col8="F8" char width 50
Col9="F9" char width 50
Col10="F10" char width 50
Col11="F11" char width 50

Et comme la premiere ligne des fichier texte est vide je ne peut pas
indiquer l'entete des colonnes.

Remarque: les fichiers texte sont créés automatiquement par un
appareil de mesure. et les colonnes sont différentes d'un contrôl à u n
autre.

Merci à tous.
Avatar
Hugues
"LB" a écrit dans le message de
news:
On 28 avr, 22:52, "Hugues" wrote:
"LB" a écrit dans le message


denews:
Bonjour,

Je veut importer des fichiers texte du type suivant dans access 2003.
(La premiere ligne du fichiers texte est vide)

"Client";"Référence";"N° Lot";"R/R";"A/
R";"M100";"M200";"M300";"Densité";"Dureté";"Viscosité"
"";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
"xxxx";"yyy";"19766";
10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
"xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
"xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
"xxxx";"yyy";"19769";
10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
"xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0

le code que j'utilise:
DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False

Mon problème est à partir de la 4 colonne à la derniere, il me les
concidere comme des champs numérique. Cela me supprime les noms des
colonnes, j'en ai besoin pour le reste de mon traitement.

Merci de votre aide.

Bonjour,

Essayez de refaire l'import avec l'assistant (fichier->Données
externes->importer) et rechargez le format d'import TEMP_IMPORT


(avancé...->
paramètres), modifiez le en précisant que le séparateur décimal est la
virgule et précisez aussi pour chaque colonne le type souhaité.
Comme il y a plus de colonnes en entête que de valeurs, il faut cocher ces
colonnes supplémentaires pour ne pas les importer. Vous pouvez aussi
renommer les colonnes si vous le souhaitez. Sauvegardez le format d'import
et testez. pensez aussi à indiquer que la première ligne contient les
entêtes (le dernier paramètre de votre commande doit être à true)

L'idée de tout récupérer en texte ne vous permettra pas d'exploiter les
données par la suite.

Bon courage

Hugues



Bonjour,

Je me suis peut etre mal expliquer,
1: j'importe les données du premiere fichier dans une table temporaire
"TEMP_IMPORT"
2: je fait mon traitemment
2a: je recherche les noms des colonnes present et
s'enregistre leur possition.
2b: j'envoie les données dans les tables approviées
3: je supprime le table temporaire.
4: je passe au fichier suivant

jusqu'au dernier. il y a un peu plus de 5000 fichiers à traiter tous
les mois.

Se programme sera utiliser sur différant poste en runtime.
j'ai fait un fichiers schema.ini pour inquer le format des données qui
est le suivant. mais sa ne fonctionne pas.

[Import_MonFichier.txt]
ColNameHeader = False
CharacterSet = ANSI
Format = delimited(;)
textDelimiter="none"
Col1="F1" char width 50
Col2="F2" char width 50
Col3="F3" char width 50
Col4="F4" char width 50
Col5="F5" char width 50
Col6="F6" char width 50
Col7="F7" char width 50
Col8="F8" char width 50
Col9="F9" char width 50
Col10="F10" char width 50
Col11="F11" char width 50

Et comme la premiere ligne des fichier texte est vide je ne peut pas
indiquer l'entete des colonnes.

Remarque: les fichiers texte sont créés automatiquement par un
appareil de mesure. et les colonnes sont différentes d'un contrôl à un
autre.

Merci à tous.

Je vous donne une solution pour supprimer la 1er ligne (ou les lignes
blanches)
l'idée est de lire le fichier texte et le réécrire
'***********************************************
Dim fin As Integer
Dim fout As Integer
Dim ligne As String

fin = FreeFile

Open "c:monfichier.txt" For Input As #fin
fout = FreeFile
Open "c:fichier_temp.txt" For Output As #fout

Do Until EOF(fin)
Line Input #fin, ligne

If Len(ligne) > 0 Then
Print #fout, ligne
End If
Loop
Close (fin)
Close (fout)

DoCmd.TransferText acImportDelim, "FORMAT_IMPORT", "Newtable",
"c:fichier_temp.txt", True
'***********************************************
Avatar
3stone
Salut,

LB wrote:
Je veut importer des fichiers texte du type suivant dans access
2003. (La premiere ligne du fichiers texte est vide)



"Client";"Référence";"N° Lot";"R/R";"A/
R";"M100";"M200";"M300";"Densité";"Dureté";"Viscosité"
"";"";"";"MPa";"%";"MPa";"MPa";"MPa";" ";" ";" "
"xxxx";"yyy";"19766";
10,5991;466,858;3,03167;4,39515;5,85958;1,383;67;0
"xxxx";"yyy";"19767";10,2295;460,57;2,98713;4,33804;5,7863;1,383;67;0
"xxxx";"yyy";"19768";9,97956;430,081;3,31023;4,8287;6,46494;1,383;67;0
"xxxx";"yyy";"19769";
10,4306;449,963;3,21512;4,69103;6,25341;1,383;67;0
"xxxx";"yyy";"19775";10,3399;432,482;3,36388;4,89242;6,5591;1,383;67;0



le code que j'utilise:
DoCmd.TransferText acImportDelim, , "TEMP_IMPORT", SourceFile, False



Mon problème est à partir de la 4 colonne à la derniere, il me les
concidere comme des champs numérique. Cela me supprime les noms des
colonnes, j'en ai besoin pour le reste de mon traitement.



Transfertext est assez rigide...

Si nécessaire, il est plus simple d'importer dans une table
temporaire et puis à l'aide d'une requête de tranférer
dans la table définitive.

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)- Masquer le texte des
messages précédents -

- Afficher le texte des messages précédents -



Bonjour,

Je me suis peut etre mal expliquer,
1: j'importe les données du premiere fichier dans une table temporaire
"TEMP_IMPORT"
2: je fait mon traitemment
2a: je recherche les noms des colonnes present et
s'enregistre leur possition.
2b: j'envoie les données dans les tables approviées
3: je supprime le table temporaire.
4: je passe au fichier suivant

jusqu'au dernier. il y a un peu plus de 5000 fichiers à traiter tous
les mois.

Se programme sera utiliser sur différant poste en runtime.
j'ai fait un fichiers schema.ini pour inquer le format des données qui
est le suivant. mais sa ne fonctionne pas.

[Import_MonFichier.txt]
ColNameHeader = False
CharacterSet = ANSI
Format = delimited(;)
textDelimiter="none"
Col1="F1" char width 50
Col2="F2" char width 50
Col3="F3" char width 50
Col4="F4" char width 50
Col5="F5" char width 50
Col6="F6" char width 50
Col7="F7" char width 50
Col8="F8" char width 50
Col9="F9" char width 50
Col10="F10" char width 50
Col11="F11" char width 50

Et comme la premiere ligne des fichier texte est vide je ne peut pas
indiquer l'entete des colonnes.

Remarque: les fichiers texte sont créés automatiquement par un
appareil de mesure. et les colonnes sont différentes d'un contrôl à un
autre.



Si générés automatiquement, ces fichiers sont "stables" au niveau format...

Si l'importation dans la table temporaire fonctionne bien,
tu pourais utiliser une routine VBA (même éventuelement pour le
traitement) et transférer par deux boucles imbriquées.

Qque chose comme:

Dim db as DAO.Database
Dim rs as DAO.Recordset
Set db = CurrentDb
Set rs = db.Openrecordset("Select * From LaTable")

For i=1 to DCount("*","LaTable")
for j = 0 to rs.Fields.Count - 1
'ici, ce que tu veux...
next j
next I

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
LB
Je vous remercie pour vos d'aide.
j'ai utiliser la solution de Hugues, de supprimer la premiere ligne et
aussi toutes les autres lignes vide avec le code suivant:

Public Function DeleteLine(fName As String)

Dim oFSO As New FileSystemObject
Dim oFSTR As Scripting.TextStream
Dim sTemp As String, sLine As String
Dim bLineFound As Boolean

On Error GoTo ErrorHandler
If oFSO.FileExists(fName) Then
Set oFSTR = oFSO.OpenTextFile(fName)
Do While Not oFSTR.AtEndOfStream
sLine = oFSTR.ReadLine
If sLine <> "" Then
sTemp = sTemp & sLine & vbCrLf
End If
Loop

oFSTR.Close
Set oFSTR = oFSO.CreateTextFile(fName, True)
oFSTR.Write sTemp

End If

ErrorHandler:
On Error Resume Next
oFSTR.Close
Set oFSTR = Nothing
Set oFSO = Nothing
End Function