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

Semi-automatisation importation fichiers texte

9 réponses
Avatar
leeloo
Bonjour à tous,
Je voudrais importer de nombreux fichiers texte délimités dans une
table. Je l'avais fait avec une macro 'transferer texte', mais le nom du
fichier étant fourni en constante (j'ai pas trouvé comment le rendre
variable - j'avais posté ici d'ailleurs), cela n'apporte pas de gain de
temps par rapport aux manips 'Fichier/données externes/importer/...).
L'idéal, serait : sur clic d'un bouton, une fenêtre 'Ouvrir' pour
selectionner le fichier dans un dossier, et hop ajout dans la table
concernée.
Le problème : je suis nulle en programmation VBA, mais nulle de chez nul :)
Quelqu'un pourrait-il m'aider ?
Merci de votre attention

Leeloo

9 réponses

Avatar
Raymond [mvp]
Bonjour leeloo.

Ce n'est pas parceque tu es nulle de chez nul qu'il ne faut pas commencer.
sur l'événement clic d'un bouton tu fais sélectionner un fichier et tu
l'importes.
1- sélection d'un fichier par l'api openfilename: utiliser la procédure
décrite sur : http://access.seneque.free.fr/ouverture_document.htm
2- import du fichier sélectionner par DoCmd.TransferText acImportDelim, ,
"matable", "monfichiertexte", True
si ça coince tu reviens.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"leeloo" a écrit dans le message de
news:
Bonjour à tous,
Je voudrais importer de nombreux fichiers texte délimités dans une
table. Je l'avais fait avec une macro 'transferer texte', mais le nom du
fichier étant fourni en constante (j'ai pas trouvé comment le rendre
variable - j'avais posté ici d'ailleurs), cela n'apporte pas de gain de
temps par rapport aux manips 'Fichier/données externes/importer/...).
L'idéal, serait : sur clic d'un bouton, une fenêtre 'Ouvrir' pour
selectionner le fichier dans un dossier, et hop ajout dans la table
concernée.
Le problème : je suis nulle en programmation VBA, mais nulle de chez nul
:)

Quelqu'un pourrait-il m'aider ?
Merci de votre attention

Leeloo



Avatar
leeloo
Raymond [mvp] a écrit:
Ce n'est pas parceque tu es nulle de chez nul qu'il ne faut pas commencer.
Je crois que vous ne mesurez pas mon degré d'inculture sur les modules

Access-2000 :-)
Le commencement pour moi se situe au tout début et ce n'est pas une
question de volonté mais de temps et d'efficacité. Autant je suis à
l'aise sur les macros, autant...

si ça coince tu reviens.
ça n'a pas trainé... non ?

Voilà ce que j'ai fait :
- sur événement clic --> procédure événementielle
- dans la fenêtreVBA, je mets :
------------
Private Sub Commande0_Click()
Me.Texte1 = OpenFile("mes documents")
DoCmd.TransferText acImportDelim, , "01", "Me.Texte1", True
End Sub
------------
- je reviens à Access
- je crée un module 'Import' contenant ce qui se trouve dans la page
ouverture_document.htm (pour moi, c'est de l'hébreu :)
- je clic sur mon bouton et j'ai l'erreur suivante :
----------
Membre de méthode ou donnée introuvable
----------
voilà !
bon, si mon cas est désespéré, n'hésitez pas à me le dire... hein !
Je me tapperai l'import de mes 325 fichiers à la mimine ;-)
ou bien j'enverrai tout par la fenêtre :D

Merci de votre soutien

Leeloo

Avatar
Raymond [mvp]
hé bien tu vois quand tu veux !

Private Sub Commande0_Click()
Me.Texte1 = OpenFile("mes documents") '**** bon
DoCmd.TransferText acImportDelim, , "01", "Me.Texte1", True
'***** faux
DoCmd.TransferText acImportDelim, , "01", Me.Texte1, True '*****
juste
End Sub

évite d'appeler des tables 01 , appelles les plutôt clients Commandes
Livraisons etc....
par principe ne mets pas d'espaces dans les noms: préfère Nom_Client à Nom
Client sur lequel il faudra mettre [Nom Client]

pour tes 325 fichiers, tu les as actuellement ? il faut tous les faire
ensemble en ce moment ? c'est ponctuel ou c'est tous les mosi par exemple ?
tu dois avoir peu d'objet encore ? si tu veux envoie-moi ta base par mail
(enlever XYZ.) en zip ou en rar et on correspondra par mail.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"leeloo" a écrit dans le message de
news:


Raymond [mvp] a écrit:
Ce n'est pas parceque tu es nulle de chez nul qu'il ne faut pas
commencer.


Je crois que vous ne mesurez pas mon degré d'inculture sur les modules
Access-2000 :-)
Le commencement pour moi se situe au tout début et ce n'est pas une
question de volonté mais de temps et d'efficacité. Autant je suis à
l'aise sur les macros, autant...

si ça coince tu reviens.
ça n'a pas trainé... non ?

Voilà ce que j'ai fait :
- sur événement clic --> procédure événementielle
- dans la fenêtreVBA, je mets :
------------
Private Sub Commande0_Click()
Me.Texte1 = OpenFile("mes documents")
DoCmd.TransferText acImportDelim, , "01", "Me.Texte1", True
End Sub
------------
- je reviens à Access
- je crée un module 'Import' contenant ce qui se trouve dans la page
ouverture_document.htm (pour moi, c'est de l'hébreu :)
- je clic sur mon bouton et j'ai l'erreur suivante :
----------
Membre de méthode ou donnée introuvable
----------
voilà !
bon, si mon cas est désespéré, n'hésitez pas à me le dire... hein !
Je me tapperai l'import de mes 325 fichiers à la mimine ;-)
ou bien j'enverrai tout par la fenêtre :D

Merci de votre soutien

Leeloo




Avatar
leeloo
Raymond [mvp] a écrit:
hé bien tu vois quand tu veux !


:-)

Private Sub Commande0_Click()
Me.Texte1 = OpenFile("mes documents") '**** bon
DoCmd.TransferText acImportDelim, , "01", "Me.Texte1", True
'***** faux
DoCmd.TransferText acImportDelim, , "01", Me.Texte1, True '*****
juste
End Sub


Ben non !-(
j'ai toujours 'Membre de méthode ou donnée introuvable' sur '.Texte1 ='
sur la 1ère ligne...
Je me rappelle maintenant pourquoi je n'ai jamais pu accrocher à la
programmation VBA :-(((

évite d'appeler des tables 01 , appelles les plutôt clients Commandes
Livraisons etc....


c'était juste pour tester ;-)

pour tes 325 fichiers, tu les as actuellement ? il faut tous les faire
ensemble en ce moment ? c'est ponctuel ou c'est tous les mosi par exemple ?


Oui, je les ai, il va falloir que je les intégre dans la base en effet,
je devrais en avoir une trentaine par mois

tu dois avoir peu d'objet encore ? si tu veux envoie-moi ta base par mail
(enlever XYZ.) en zip ou en rar et on correspondra par mail.


Je vous remercie de la proposition, mais ce n'est pas réalisable.

Leeloo

Avatar
Raymond [mvp]
Bonjour.

est-ce que tu as bien le contrôle texte1 (qui est un nom pour l'exemple) ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"leeloo" a écrit dans le message de
news:


Raymond [mvp] a écrit:
hé bien tu vois quand tu veux !


:-)

Private Sub Commande0_Click()
Me.Texte1 = OpenFile("mes documents") '**** bon
DoCmd.TransferText acImportDelim, , "01", "Me.Texte1", True
'***** faux
DoCmd.TransferText acImportDelim, , "01", Me.Texte1, True
'*****


juste
End Sub


Ben non !-(
j'ai toujours 'Membre de méthode ou donnée introuvable' sur '.Texte1 ='
sur la 1ère ligne...
Je me rappelle maintenant pourquoi je n'ai jamais pu accrocher à la
programmation VBA :-(((

évite d'appeler des tables 01 , appelles les plutôt clients Commandes
Livraisons etc....


c'était juste pour tester ;-)

pour tes 325 fichiers, tu les as actuellement ? il faut tous les faire
ensemble en ce moment ? c'est ponctuel ou c'est tous les mosi par
exemple ?



Oui, je les ai, il va falloir que je les intégre dans la base en effet,
je devrais en avoir une trentaine par mois

tu dois avoir peu d'objet encore ? si tu veux envoie-moi ta base par
mail


(enlever XYZ.) en zip ou en rar et on correspondra par mail.


Je vous remercie de la proposition, mais ce n'est pas réalisable.

Leeloo




Avatar
leeloo
Raymond [mvp] a écrit:
Bonjour.

est-ce que tu as bien le contrôle texte1 (qui est un nom pour l'exemple) ?


Eh non, je ne l'avais pas :-)
Maintenant ça y est... et c'est génial quand ça FONCTIONNE :-)))))))))
Bon, je serais incapable de le refaire toute seule, mais le premier pas
est fait et je vous en remercie. Dès que j'ai un peu de temps,
j'essaierai de me pencher sur des procédures événementielles simples
parce que les api...

Encore merci, vous m'avez vraiement dépanné :-)

Leeloo

Avatar
leeloo
Raymond [mvp] a écrit:

Bonjour.

est-ce que tu as bien le contrôle texte1 (qui est un nom pour
l'exemple) ?



Oupsss, un dernier truc :
dans le 'Me.Texte1 = OpenFile("mes documents")', si je veux que le
dossier (mes documents, ici) soit pris dans une table de données
générales 'DG' par exemple, est-ce que je peux mettre :
Me.Texte1 = OpenFile([DG].[dossier])
[dossier] étant le champ de la table 'DG' contenant le chemin du dossier
où se trouvent mes fichiers à importer.

Merci de votre aide

Leeloo


Avatar
Raymond [mvp]
tu peux faire ceci:

Me.Texte1 = OpenFile(DLookup("Dossier", "DG"))
ou
Me.Texte1 = OpenFile(DLookup("Dossier", "DG","[Numéro] = 1"))

[Numéro] étant le champ contenant la clé primaire

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"leeloo" a écrit dans le message de
news:


Raymond [mvp] a écrit:

Bonjour.

est-ce que tu as bien le contrôle texte1 (qui est un nom pour
l'exemple) ?



Oupsss, un dernier truc :
dans le 'Me.Texte1 = OpenFile("mes documents")', si je veux que le
dossier (mes documents, ici) soit pris dans une table de données
générales 'DG' par exemple, est-ce que je peux mettre :
Me.Texte1 = OpenFile([DG].[dossier])
[dossier] étant le champ de la table 'DG' contenant le chemin du dossier
où se trouvent mes fichiers à importer.

Merci de votre aide

Leeloo





Avatar
leeloo
Raymond [mvp] a écrit:
tu peux faire ceci:

Me.Texte1 = OpenFile(DLookup("Dossier", "DG"))


C'est parfait. Merci mille fois :-)

Leeloo