× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Import Txt sous Access via Macro
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
ted the Ors
  Posté le 27/01/2009 @ 17:40 
Aller en bas de la page 
Astucien

onjour,

Je cherche à importer des fichiers txt avec séparateur (;) dans une base de données Excel, en passant par une macro (module access). J'ai trouvé le code suivant sur le net:

Sub ImportSchemaTable()
Dim db As DAO.Database
Set db = CurrentDb()
db.Execute _
"SELECT * INTO NewContact FROM [Text;FMT=Delimited;HDR=Yes;DATABASE=C:\My documents;].[Contacts#txt];", _
dbFailOnError
db.TableDefs.Refresh
End Sub

C:\My documents : je remplace par le chemin du dossier dans lequel est contenu mon .txt
Contacts: je remplace par le nom du fichier txt (sans le .txt :aie:)

Ca marche bien, sauf pour le delimiteur (dans mon cas un ";") qui n'est pas pris en compte...De plus, la première ligne est interprété comme les noms de colonnes.

Comment indique t on le délimiteur dans cette macro?

D'avance merci!

Publicité
Marmotte18
 Posté le 27/01/2009 à 20:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour ,

Même s'il ne s'agit pas directement de ton problème, cela pourrait te donner des idées.

Voilà une macro qui amène un fichier texte avec séparateur ';' dans Excel :

Sub Macro1()

Workbooks.OpenText Filename:= _
"C:\ ... \Bureau\Nouveau Document texte.txt", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 4)), TrailingMinusNumbers:=True
End Sub

ted the Ors
 Posté le 27/01/2009 à 21:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Marmotte18 a écrit :

Bonjour ,

Même s'il ne s'agit pas directement de ton problème, cela pourrait te donner des idées.

Voilà une macro qui amène un fichier texte avec séparateur ';' dans Excel :

Sub Macro1()

Workbooks.OpenText Filename:= _
"C:\ ... \Bureau\Nouveau Document texte.txt", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 4)), TrailingMinusNumbers:=True
End Sub

Bonsoir,

C'est super gentil malheureusement l'import de fichier txt n'est pas géré de la meme facon en VBA et en VBE...

Par contre, j'ai fureter sur le net, et j'ai trouvé que la commande à utiliser était

DoCmd.TransferText acExportDelim, "spec", "Table1", "C:\Monfichier.txt", False

Le fichier spec contient les specifications de l'import...

Plus d'infos ici

Mon probleme est que mon fichier spec n'est pas trouvé (erreur 3625)

Marmotte18
 Posté le 27/01/2009 à 21:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

ted the Ors,

Ne faudrait-il pas utiliser acImportDelim, au lieu de acExportDelim ?

Dans l'aide d'Accès, j'ai trouvé :

Cet exemple exporte les données de la table External Report (État externe) de Microsoft Access dans le fichier texte délimité April.doc en utilisant le format Sortie standard :

DoCmd.TransferText acExportDelim, "Standard Output", _
    "External Report", "C:\Txtfiles\April.doc"


Modifié par Marmotte18 le 27/01/2009 21:37
ted the Ors
 Posté le 27/01/2009 à 21:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Excellente remarque...

J'ai trouvé en continuant de chercher:

Private Sub Commande6_Click()
DoCmd.TransferText acImportDelim, (""), "Table1", "C\Monfichier.txt", False
End Sub

soit:

DoCmd.TransferText acImportDelim, (Séparateur), "Nom de la table à importer", "Chemin et fichier depuis lequel on importe", False (1er ligne n'est pas l'entete) ou True (1ere ligne est l'entete)

Je viens de faire l'essai sur un fichier de 300000 lignes, ca marche nickel!

Merci encore à la marmotte et ceux qui m'ont lus...

Bonne soirée à tous!

ted the Ors
 Posté le 28/01/2009 à 16:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

BOn en fait, ca marche très bien sous Office 2001, mais pas sous 2003...Si quelqu'un a une idée du pourquoi, je suis preneur!

Marmotte18
 Posté le 28/01/2009 à 19:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour ted the Ors,

J'ai essayé sur Access 2003 et cela fonctionne très bien. Tu trouveras ci-dessous la procédure qui tourne :

Private Sub Importer_Click()
DoCmd.TransferText acImportDelim, (";"), "Table1", "C:\Mes documents\ ...
\Document.txt", False
End Sub


Modifié par Marmotte18 le 28/01/2009 19:08
ted the Ors
 Posté le 28/01/2009 à 19:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

As tu creer ta table "Table1" au préalable?

Si oui comment as tu renseigné les caracteristiques des colonnes?

Parce que, perso, quand je fais l'import, j'ai une erreur (je n'ai pas le libellé exact, vu que c'est au TAF et que là, je suis @home) qui me dit que la colonne F1 de ma table n'est pas valide alors que ma table n'a pas de colonne F1...

Quand je crée une table avec une colonne intitulée F1, l'import se fait, mais il ne prend pas en compte le séparateur....

zen

Marmotte18
 Posté le 28/01/2009 à 19:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

ted the Ors,

La table n'existe pas dans ma base données. C'est la procédure qui crée cette table !

NB : tu as bien noté la présence du caractère ';' dans mon code alors que chez toi, il n'y figurait pas !

Ci-joint ma base de données et le fichier .text correspondant : http://cjoint.com/?bEtI6aBsNQ Il faudra seulement changer le chemin pour aller au fichier dans le code VBE.



Modifié par Marmotte18 le 28/01/2009 19:44
Publicité
ted the Ors
 Posté le 28/01/2009 à 19:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Merci, j'essaierai demain !

Pour le caractère de séparation, effectivement, il était absent de mon code, mais j'ai pensé à le spécifier lors de mes essais!

Merci encore pour ton aide.

Excellente soirée à toi!

ted the Ors
 Posté le 29/01/2009 à 11:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Je vais devenir fou!

Ca ne fonctionne pas! J'ai essayé avec ton fichier et ta base, de refaire l'import, mais j'obtiens une table avec une seule colonne!

là je ne comprend pas!

Marmotte18
 Posté le 29/01/2009 à 12:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour ted the Ors,

J'ai refait tourner l'import et cela fonctionne impécablement bien ! La table est créée automatiquement et j'ai bien les 3 champs attendus.

Ne serait-ce pas une différence dans "outils" < "options" mais je ne vois pas quoi ?



Modifié par Marmotte18 le 29/01/2009 12:19
ted the Ors
 Posté le 29/01/2009 à 12:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ou peut etre du coté des références!

Quelles sont celles cochées chez toi?

Marmotte18
 Posté le 29/01/2009 à 12:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

ted the Ors,

Qu'appelles-tu "références" ? Où se trouvent-elles ?

Quel est ton format de fichier par défaut ? (Outils < Options < avancé). Je te l'ai transmis en Access 2000 mais cela fonctionne chez moi aussi en Access 2002 - 2003 !

Par contre, j'ai constaté un problème : si on demande plusieurs fois l'import du fichier, il va ajouter autant de fois l'ensemble des enregistrements que l'on aura cliqué sur le bouton. => Il faut d'abord vérifier si le fichier existe avant de faire cette opération

  • S'il existe => ne rien faire
  • Sinon, accepter la création dudit fichier


Modifié par Marmotte18 le 29/01/2009 12:47
ted the Ors
 Posté le 29/01/2009 à 13:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Marmotte18 a écrit :

ted the Ors,

Qu'appelles-tu "références" ? Où se trouvent-elles ?

Quel est ton format de fichier par défaut ? (Outils < Options < avancé). Je te l'ai transmis en Access 2000 mais cela fonctionne chez moi aussi en Access 2002 - 2003 !

Pour les references, elles sont "reglables" via Outils/Reference dans l'éditeur MS VB.

Pour mon format par défaut, j'ai "Access 2002 - 2003".

Autre news, en ne changeant rien au code VB, et en remplacant dans le fichier le ; par , l'import se fait bien!

Marmotte18
 Posté le 29/01/2009 à 13:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

ted the Ors,

Ci-dessous les informations demandées :

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
139,99 €Disque dur externe USB 3.0 Seagate 8 To à 139,99 €
Valable jusqu'au 11 Août

Amazon propose actuellement le disque dur Seagate Expansion Desktop Drive 8 To à 139,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 200 €. Le disque est non soudé et vous pourez le récupérer pour l'utiliser dans un ordinateur, un NAS, etc. Connexion USB 3.0.


> Voir l'offre
GratuitJeu PC Superbrothers: Sword & Sworcery EP gratuit
Valable jusqu'au 06 Août

Epic Game Store offre actuellement le jeu PC  Superbrothers: Sword & Sworcery EP. Aidez une moniale itinérante guerrière à terminer sa quête tragique dans Superbrothers: Sword & Sworcery EP, un jeu d'action-aventure essentiel créé par Superbrothers et les magiciens du jeu vidéo de chez CAPY, avec une bande-son primée signée Jim Guthrie.


> Voir l'offre
-65%-65% sur le coin des affaires chez LDLC avec le code TROPIC15
Valable jusqu'au 06 Août

LDLC propose actuellement 65% de réduction sur son coin des affaires qui regroupe des produits neufs en fin de série ou des produits reconditionnés. N'hésitez à parcourir les différentes rubriques, il y a vraiment des choses intéressantes. Saisissez le code TROPIC15 dans votre panier pour profiter de l'offre.


> Voir l'offre

Sujets relatifs
Sous Access 2003 Macro spécifique...
Macro sous access
macro nombres stockés sous forme texte
Import Excel vers Access
ACCESS 97 sous Windows 7 ou 8 ?
macro sous excel 2007
Amélioration d'une macro sous excel 97 ou 2003
Execution Sous excell 2007 macro pas a pas
Macro sous word 2010
Macro sous Excel 2010
Plus de sujets relatifs à Import Txt sous Access via Macro
 > Tous les forums > Forum Bureautique