|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Bonjour,
Je cherche à effectuer des requetes sur une table temporaire qui contiendrait l import d'un fichier csv et qui en fonction de ce qu elle trouve dans le champ 1 envoie la ligne complete dans une table définie. Ce code serai englobé dans du vba. Voici un bout de mon code Code :
Merci |
||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 263 ![]() |
J'ai pas vraiment testé, mais cela pourrait t'inspirer
Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Merci de ta réponse!
J'ai adapté le code et testé mais j'ai une erreur au niveau de la ligne L'erreur c'est : type defini par l'utilisateur non definie J'ai rajouté ADODB à la definition du recordset car tu ne l avais pas mis, mais ca ne marche pas! Mon code en intégralite : Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 263 ![]() |
Je n'ai pas ce type de problème
Je crois (sans en être totalement sûr), qu'il te faut référencer "active data object x.x Library" (Menu outils/références quand tu affiche le code VB) Michel |
|
|
00
|
|
|
#5 | ||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Pourrai-tu préciser exactement ce que tu cherches à faire ? Ce que je comprends : Tu importes un fichier csv dans une table nommée Import. Tu dispatches les enregistrements de la table Import dans 4 tables, à l'aide requêtes ajouts, en fonction de ce que contient le premier champ (Champ1). Pour moi, ça peut se faire avec 4 requêtes ayant chacune une clause WHERE adéquate. Par exemple si les Champ1='ALPHA' vont dans Nom_Tbl1 et les Champ1='BETA' vont dans Nom_Tbl2 : Code :
Code :
|
||||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Merci beaucoup pour votre aide !
![]() ![]() Effectivement j'avais oublié de rajouter la réference ( je l ai confondue avec la DAO )LedZep, tu as bien compris ce que je cherche à faire, à la seule nuance que je voudrais qu'une serie de fichier csv d'un répertoire fixe soit importer dans une table temporaire un a un, puis dispatcher dans les 4 tables fixes ( elles ne bougeront pas) Voici mon code pour le moment: Code :
J'aimerai bien sauver les requêtes avec la commande DoCmd.OpenQuery mais je ne sais pas comment l'integrer dans mon code! |
||
|
|
00
|
|
|
#7 | ||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Cette déclaration n'est pas 100% correcte Code :
Dim Nom_Tbl1, Nom_Tbl2, Nom_Tbl3, Nom_Tbl4 As String Code :
Dim Nom_Tbl1 As String, Nom_Tbl2 As String, Nom_Tbl3 As String, Nom_Tbl4 As String Il faudrait remplacer par Code :
Fic = Dir(Dossier & "*.CSV", vbNormal) Code :
Code :
A+ |
||||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
mince j'ai toujours un probleme au niveau de la ligne
Code :
Fic = Dir(Dossier & "*.CSV", vbNormal) |
|
|
00
|
|
|
#9 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Es-tu sûre de ce que contient ta variable Dossier ? Au début de la discussion c'est : Code :
Dossier = "C:\Documents and Settings\" Code :
Dossier = "D:\Documents and Settings\" ... ça marche beaucoup moins bien.A+ |
|
|
10
|
|
|
#10 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Je suis un
J'ai cherché comme une idiote alors que c'était sous mes yeux! ![]() Du coup pour mon autre souci j'ai bien cherché avant de poster mais impossible de debogger la ligne Code :
DoCmd.TransferText acLinkDelim, "spec", "Import", Dossier & Fic, True En plus la variable Fic ne marche toujours pas car lorsque je passe la souris dessus elle m'affiche Fic="" Et lorsque je ne lance pas le mode deboggage j'ai un message d'erreur 3027 "Mise a jour impossible. La base de données ou l'objet est en lecture seule"... Est ce que je dois ouvrir ma base avec un mode spéciale car elle n est pas en lecture seule. Est ce que le problème de récupération des fichiers vient de la différence entre vbNormal et vbDirectory? Merci Bonne soirée |
|
|
00
|
|
|
#11 | |||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Citation:
généralement on ne pas utiliser d'assistant Access. Citation:
Citation:
Code :
A+ |
|||||
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Milles merci pour les explications!!!
![]() La recuperation des fichiers fonctionne tres bien. Il me reste des questions sur la partie requete sql: Le code passe directement en END SUB à la fin de mon premier bloc de requete, en plus il zappe completement la boucle "do while" Je n'arrive pas à comprendre pourquoi il ne passe pas à la suite. De plus la commande Delete du contenu de la table Import fonctionne très bien mais ensuite il m'importe mon fichier csv dans une table nommé Import.1 et je n'arrive pas à forcer le remplissage de la table Import. voici un extrait de mon code Code :
|
||
|
|
00
|
|
|
#13 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Citation:
De cette manière l'erreur s'affichera et le code s'arrêtera sur la ligne fautive. Attention, il manque une ligne pour passer au fichier suivant avant Loop. Si tu ne fais pas ça ... boucle infinie. Citation:
Dans ce cas, il faut détruire la table avant de la recréer (lier) avec TransferText. Sinon on a des Import, Import1, Import2, Import3 ... Remplacer ... Code :
Code :
|
||||||
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Merci pour la suppression de la table import c est exactement ce que je recherchais.
Par contre le reste du code n est tojours pas executé : * Les insertions ne marchent pas, le premier bloc de requete d'insertion est parcouru mais non exécuté... * La boucle n est pas reprise et pourtant j'ai bien rajouté le Fic= Dir() Du coup je suis coincée! |
|
|
00
|
|
|
#15 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Est-ce que tu pourrai poster une copie de ta base et des fichiers csv (au moins un par catégorie alpha, beta, gama, delta), le tout dans un fichier zip ? A+ |
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Je n'arrive pas à ajouter des pièces jointes! A chauqe fois le site plante!
|
|
|
00
|
|
|
#17 | ||
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
bon j'ai essayé de rajouter une boucle if pour la prise en compte des requetes sur la table d'iimport mais comme au debut la boucle s arrete a l import, elle ne passe pas au fichier suivant, de plus aucunes de mes requetes n'est exéuté mis à part la première qui consiste supprimer la table d'import temporaire
Code :
|
||
|
|
00
|
|
|
#18 | ||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonsoir,
Je ne sais pas si tu as vu l'email que je t'ai envoyé. Les fichiers csv sont en fait des fichiers Excel xlxs. On ne peut pas les lier avec DoCmd.TransferText sans générer une erreur. En admettant que les fichiers soient réellement des csv, il faut que la spécification d'importation "spec" existe. Sinon, erreur. Il faut avant tout régler ce problème de type de fichier. csv ou xlxs ? Ce test ... Code :
La table MSysObjects n'a pas de champ nommé Champ. Si on en revient à la création de la table liée Import, es-tu capable de la créer à la main ? Si tu n'y arrive pas, il y a peu de chance qu'on puisse le faire en VBA. De toutes façons, je pense que la priorité est de déterminer la nature réelle des fichiers (csv ou xlxs). A+ |
||
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : novembre 2011 Messages : 20 ![]() |
Merci pour toutes tes explications et ta patience, j'ai resolu mon problème grâce à ton aide!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com