Je cherche =E0 importer des donn=E9es d'un document texte dans une table.
Je ne dispose pour l'instant dans ma base que du lien vers le document
en question, lien contenu dans une textbox.
Je ne veux pas visualiser le document, mais r=E9cup=E9rer les trois
premi=E8res "colonnes" pour les ins=E9rer dans trois des champs d'une
table d=E9di=E9e.
La difficult=E9 vient de ce que la s=E9paration entre les diff=E9rentes
"colonnes" est repr=E9sent=E9e par un espace. ( du coup, ca ne fait pas
du tout des colonnes, la taille des champs =E9tant al=E9atoire.)
J'avais pens=E9 utiliser TransferSpreadsheet, mais si j'ai bien compris,
ca ne s'applique qu'aux documents excel.
je ne sais pas si il existe une fonction ou une facon de faire
particuli=E8re, si oui, merci de m'en faire part.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
oualaléreur
J'ai essayé avec DoCmd.TransferText (acImportDelim, , "Tbl_ADHock", "LK_LOM",True), mais j'obtient un message d'erreur : "expected:=" Est-ce la bonne voie ? Qu'est-ce que j'ai fait de travers ?
J'ai essayé avec DoCmd.TransferText (acImportDelim, , "Tbl_ADHock",
"LK_LOM",True), mais j'obtient un message d'erreur : "expected:="
Est-ce la bonne voie ? Qu'est-ce que j'ai fait de travers ?
J'ai essayé avec DoCmd.TransferText (acImportDelim, , "Tbl_ADHock", "LK_LOM",True), mais j'obtient un message d'erreur : "expected:=" Est-ce la bonne voie ? Qu'est-ce que j'ai fait de travers ?
3stone
Salut,
"oualaléreur" Je cherche à importer des données d'un document texte dans une table. Je ne dispose pour l'instant dans ma base que du lien vers le document en question, lien contenu dans une textbox. Je ne veux pas visualiser le document, mais récupérer les trois premières "colonnes" pour les insérer dans trois des champs d'une table dédiée. La difficulté vient de ce que la séparation entre les différentes "colonnes" est représentée par un espace. ( du coup, ca ne fait pas du tout des colonnes, la taille des champs étant aléatoire.)
Tu peux utiliser une fonction comme la suivante :
Function LireTexte(sFile, iColonne) ' ' Syntaxe : LireTexte "C:Test.txt" ' Dim vLigne As Variant Dim f As Integer, i As Integer Dim sLigne As String
If Dir(sFile) = "" Then MsgBox "Fichier ou chemin incorrect!" Exit Function End If
f = FreeFile Open sFile For Input As #f Do Until EOF(f) Input #f, sLigne vLigne = Split(sLigne, " ") For i = 0 To iColonne Debug.Print vLigne(i) Next i Loop Close #f
End Function
en aménageant la partie boucle sur le "debug.print"
Et t'aider de ceci pour pousser les données dans une table: http://www.3stone.be/access/articles.php?lng=fr&pg5
"oualaléreur"
Je cherche à importer des données d'un document texte dans une table.
Je ne dispose pour l'instant dans ma base que du lien vers le document
en question, lien contenu dans une textbox.
Je ne veux pas visualiser le document, mais récupérer les trois
premières "colonnes" pour les insérer dans trois des champs d'une
table dédiée.
La difficulté vient de ce que la séparation entre les différentes
"colonnes" est représentée par un espace. ( du coup, ca ne fait pas
du tout des colonnes, la taille des champs étant aléatoire.)
Tu peux utiliser une fonction comme la suivante :
Function LireTexte(sFile, iColonne)
'
' Syntaxe : LireTexte "C:Test.txt"
'
Dim vLigne As Variant
Dim f As Integer, i As Integer
Dim sLigne As String
If Dir(sFile) = "" Then
MsgBox "Fichier ou chemin incorrect!"
Exit Function
End If
f = FreeFile
Open sFile For Input As #f
Do Until EOF(f)
Input #f, sLigne
vLigne = Split(sLigne, " ")
For i = 0 To iColonne
Debug.Print vLigne(i)
Next i
Loop
Close #f
End Function
en aménageant la partie boucle sur le "debug.print"
Et t'aider de ceci pour pousser les données dans une table:
http://www.3stone.be/access/articles.php?lng=fr&pg5
"oualaléreur" Je cherche à importer des données d'un document texte dans une table. Je ne dispose pour l'instant dans ma base que du lien vers le document en question, lien contenu dans une textbox. Je ne veux pas visualiser le document, mais récupérer les trois premières "colonnes" pour les insérer dans trois des champs d'une table dédiée. La difficulté vient de ce que la séparation entre les différentes "colonnes" est représentée par un espace. ( du coup, ca ne fait pas du tout des colonnes, la taille des champs étant aléatoire.)
Tu peux utiliser une fonction comme la suivante :
Function LireTexte(sFile, iColonne) ' ' Syntaxe : LireTexte "C:Test.txt" ' Dim vLigne As Variant Dim f As Integer, i As Integer Dim sLigne As String
If Dir(sFile) = "" Then MsgBox "Fichier ou chemin incorrect!" Exit Function End If
f = FreeFile Open sFile For Input As #f Do Until EOF(f) Input #f, sLigne vLigne = Split(sLigne, " ") For i = 0 To iColonne Debug.Print vLigne(i) Next i Loop Close #f
End Function
en aménageant la partie boucle sur le "debug.print"
Et t'aider de ceci pour pousser les données dans une table: http://www.3stone.be/access/articles.php?lng=fr&pg5
Merci pour ces précieux conseils. J'ai finalement créé une fonction avec les deux que tu m'as indiquées. Elle est sensée me permettre de récupérer les trois premières colonnes du document pointé par "sfile" et de les transférer dans la table "TableBassePourApéroSympa". La lecture des données s'effectue correctement . Le problème, semble-t-il, vient du délimiteur dans la fonction Split. En fait d'espaces (reconnus par Access, eux), les délimiteurs dans mon document sont des tabulations. Je sais bien que la question est très précise, mais apparemment je n'ai pas le choix, le document est en provenance directe d'orcade.
Pourquoi la fonction Split ne reconnaît-elle pas les tabulations? Y a-t-il une syntaxe particulière ? Je colle mon code au cas où, sachant que j'en fournirai un mieux quand ca tournera. Une dernière chose, j'ai attribué à sfile le contenu d'un champ hyperlink, il parraît que ca peut poser problème... C'est pas ca quand même..
Merci et a+
Benoit
Function PutInTableBassePourApéroSympa(sfile As String)
If Dir(sfile) = "" Then MsgBox "Fichier ou chemin incorrect!" Exit Function End If
Dim dbs As DAO.Database Dim rst As DAO.Recordset Dim F As Integer, i As Integer, iColonne As Integer Dim txtLine As String Dim vLigne As Variant
Set dbs = CurrentDb Set rst = dbs.OpenRecordset("TableBassePourApéroSympa", dbOpenDynaset) F = FreeFile Open sfile For Input As #F
Close #F rst.Close Set dbs = Nothing Set rst = Nothing
End Function
Salut Pierre,
Merci pour ces précieux conseils. J'ai finalement créé une fonction
avec les deux que tu m'as indiquées. Elle est sensée me permettre de
récupérer les trois premières colonnes du document pointé par
"sfile" et de les transférer dans la table
"TableBassePourApéroSympa". La lecture des données s'effectue
correctement .
Le problème, semble-t-il, vient du délimiteur dans la fonction Split.
En fait d'espaces (reconnus par Access, eux), les délimiteurs dans mon
document sont des tabulations. Je sais bien que la question est très
précise, mais apparemment je n'ai pas le choix, le document est en
provenance directe d'orcade.
Pourquoi la fonction Split ne reconnaît-elle pas les tabulations? Y
a-t-il une syntaxe particulière ?
Je colle mon code au cas où, sachant que j'en fournirai un mieux quand
ca tournera.
Une dernière chose, j'ai attribué à sfile le contenu d'un champ
hyperlink, il parraît que ca peut poser problème... C'est pas ca
quand même..
Merci et a+
Benoit
Function PutInTableBassePourApéroSympa(sfile As String)
If Dir(sfile) = "" Then
MsgBox "Fichier ou chemin incorrect!"
Exit Function
End If
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim F As Integer, i As Integer, iColonne As Integer
Dim txtLine As String
Dim vLigne As Variant
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("TableBassePourApéroSympa", dbOpenDynaset)
F = FreeFile
Open sfile For Input As #F
Merci pour ces précieux conseils. J'ai finalement créé une fonction avec les deux que tu m'as indiquées. Elle est sensée me permettre de récupérer les trois premières colonnes du document pointé par "sfile" et de les transférer dans la table "TableBassePourApéroSympa". La lecture des données s'effectue correctement . Le problème, semble-t-il, vient du délimiteur dans la fonction Split. En fait d'espaces (reconnus par Access, eux), les délimiteurs dans mon document sont des tabulations. Je sais bien que la question est très précise, mais apparemment je n'ai pas le choix, le document est en provenance directe d'orcade.
Pourquoi la fonction Split ne reconnaît-elle pas les tabulations? Y a-t-il une syntaxe particulière ? Je colle mon code au cas où, sachant que j'en fournirai un mieux quand ca tournera. Une dernière chose, j'ai attribué à sfile le contenu d'un champ hyperlink, il parraît que ca peut poser problème... C'est pas ca quand même..
Merci et a+
Benoit
Function PutInTableBassePourApéroSympa(sfile As String)
If Dir(sfile) = "" Then MsgBox "Fichier ou chemin incorrect!" Exit Function End If
Dim dbs As DAO.Database Dim rst As DAO.Recordset Dim F As Integer, i As Integer, iColonne As Integer Dim txtLine As String Dim vLigne As Variant
Set dbs = CurrentDb Set rst = dbs.OpenRecordset("TableBassePourApéroSympa", dbOpenDynaset) F = FreeFile Open sfile For Input As #F
Close #F rst.Close Set dbs = Nothing Set rst = Nothing
End Function
3stone
Salut,
"oualaléreur" [...] Le problème, semble-t-il, vient du délimiteur dans la fonction Split. En fait d'espaces (reconnus par Access, eux), les délimiteurs dans mon document sont des tabulations. Je sais bien que la question est très précise, mais apparemment je n'ai pas le choix, le document est en provenance directe d'orcade. Pourquoi la fonction Split ne reconnaît-elle pas les tabulations? Y a-t-il une syntaxe particulière ?
Regarde le second paramètre de la fonction Split() il permet de spécifier le séparateur... essaies :
vLigne = Split(txtLine, chr(9), 3, 1)
Une dernière chose, j'ai attribué à sfile le contenu d'un champ hyperlink, il parraît que ca peut poser problème... C'est pas ca quand même..
heu... sFile désigne le nom du fichier...
je ne comprends pas comment tu lui attribue "un champ hyperlink" ?
"oualaléreur"
[...]
Le problème, semble-t-il, vient du délimiteur dans la fonction Split.
En fait d'espaces (reconnus par Access, eux), les délimiteurs dans mon
document sont des tabulations. Je sais bien que la question est très
précise, mais apparemment je n'ai pas le choix, le document est en
provenance directe d'orcade.
Pourquoi la fonction Split ne reconnaît-elle pas les tabulations? Y
a-t-il une syntaxe particulière ?
Regarde le second paramètre de la fonction Split()
il permet de spécifier le séparateur... essaies :
vLigne = Split(txtLine, chr(9), 3, 1)
Une dernière chose, j'ai attribué à sfile le contenu d'un champ
hyperlink, il parraît que ca peut poser problème... C'est pas ca
quand même..
heu... sFile désigne le nom du fichier...
je ne comprends pas comment tu lui attribue "un champ hyperlink" ?
"oualaléreur" [...] Le problème, semble-t-il, vient du délimiteur dans la fonction Split. En fait d'espaces (reconnus par Access, eux), les délimiteurs dans mon document sont des tabulations. Je sais bien que la question est très précise, mais apparemment je n'ai pas le choix, le document est en provenance directe d'orcade. Pourquoi la fonction Split ne reconnaît-elle pas les tabulations? Y a-t-il une syntaxe particulière ?
Regarde le second paramètre de la fonction Split() il permet de spécifier le séparateur... essaies :
vLigne = Split(txtLine, chr(9), 3, 1)
Une dernière chose, j'ai attribué à sfile le contenu d'un champ hyperlink, il parraît que ca peut poser problème... C'est pas ca quand même..
heu... sFile désigne le nom du fichier...
je ne comprends pas comment tu lui attribue "un champ hyperlink" ?
Génial. La table se remplie. Un détail, pour avoir trois champs, il faut écrire vLigne = Split(txtLine, chr(9), 4, 1) Sans cela, tout le reste de la ligne est attribué à vLigne(2), et rst![Nomchamp3] ne se remplit pas (problème de format, mais l'information est éronnée de toutes facons). Je pense qu'il faut que la fonction Split considère quatre champs pour prendre en compte trois séparateurs.
Dans sFile, il y a le chemin menant au fichier : "C:UserDatavrignonColibryHVIMPORT.BOM" Je voulais juste signaler qu'il apparaissait dans le formulaire comme un lien hyperlink, mais en fait, en double-cliquant, il n'ouvre pas le document, et je ne vois cette propriété nulle part ( en même temps, c'est en allemand, je comprends rien ). en tous cas ca marche avec le chemin dans sFile.
Hésites pas à me dire si tu penses qu'une version plus générale (qui récupère tout le document par exemple) serait utile sur le forum, je dois pouvoir faire ca, maintenant. sinon, le reste du code n'a pas changé.
Merci beaucoup et à plus
Benoit
Génial. La table se remplie. Un détail, pour avoir trois champs, il
faut écrire
vLigne = Split(txtLine, chr(9), 4, 1)
Sans cela, tout le reste de la ligne est attribué à vLigne(2), et
rst![Nomchamp3] ne se remplit pas (problème de format, mais
l'information est éronnée de toutes facons).
Je pense qu'il faut que la fonction Split considère quatre champs pour
prendre en compte trois séparateurs.
Dans sFile, il y a le chemin menant au fichier :
"C:UserDatavrignonColibryHVIMPORT.BOM"
Je voulais juste signaler qu'il apparaissait dans le formulaire comme
un lien hyperlink, mais en fait, en double-cliquant, il n'ouvre pas le
document, et je ne vois cette propriété nulle part ( en même temps,
c'est en allemand, je comprends rien ). en tous cas ca marche avec le
chemin dans sFile.
Hésites pas à me dire si tu penses qu'une version plus générale
(qui récupère tout le document par exemple) serait utile sur le
forum, je dois pouvoir faire ca, maintenant. sinon, le reste du code
n'a pas changé.
Génial. La table se remplie. Un détail, pour avoir trois champs, il faut écrire vLigne = Split(txtLine, chr(9), 4, 1) Sans cela, tout le reste de la ligne est attribué à vLigne(2), et rst![Nomchamp3] ne se remplit pas (problème de format, mais l'information est éronnée de toutes facons). Je pense qu'il faut que la fonction Split considère quatre champs pour prendre en compte trois séparateurs.
Dans sFile, il y a le chemin menant au fichier : "C:UserDatavrignonColibryHVIMPORT.BOM" Je voulais juste signaler qu'il apparaissait dans le formulaire comme un lien hyperlink, mais en fait, en double-cliquant, il n'ouvre pas le document, et je ne vois cette propriété nulle part ( en même temps, c'est en allemand, je comprends rien ). en tous cas ca marche avec le chemin dans sFile.
Hésites pas à me dire si tu penses qu'une version plus générale (qui récupère tout le document par exemple) serait utile sur le forum, je dois pouvoir faire ca, maintenant. sinon, le reste du code n'a pas changé.
Merci beaucoup et à plus
Benoit
3stone
re,
"oualaléreur" Génial. La table se remplie. Un détail, pour avoir trois champs, il faut écrire vLigne = Split(txtLine, chr(9), 4, 1) Sans cela, tout le reste de la ligne est attribué à vLigne(2), et rst![Nomchamp3] ne se remplit pas (problème de format, mais l'information est éronnée de toutes facons).
"oualaléreur"
Génial. La table se remplie. Un détail, pour avoir trois champs, il
faut écrire
vLigne = Split(txtLine, chr(9), 4, 1)
Sans cela, tout le reste de la ligne est attribué à vLigne(2), et
rst![Nomchamp3] ne se remplit pas (problème de format, mais
l'information est éronnée de toutes facons).
"oualaléreur" Génial. La table se remplie. Un détail, pour avoir trois champs, il faut écrire vLigne = Split(txtLine, chr(9), 4, 1) Sans cela, tout le reste de la ligne est attribué à vLigne(2), et rst![Nomchamp3] ne se remplit pas (problème de format, mais l'information est éronnée de toutes facons).