Copier feuille excell / coller dans table access

jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007 - 3 oct. 2006 à 18:00
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007 - 4 oct. 2006 à 12:05
Bonjour tout le monde,

Je suis confronté à une problème pour importer, transférer des données depuis excell vers une table  access.2002.
Dans un premier temps, j'ai effectué l'importation avec l'assistant access, OK mais lors d 'une importation avec commande, çà se gâte.
J'ai utilisé, en vain, la méthode
DoCmd.TransferSpreadsheet acImport, 8, matable, FileToImport, True, "mafeuille!" qui  ne fonctionne pas  tandis que si j'ouvre ma table et que je fais un copier/coller de la feuille dans ma table , çà marche.
Je pense donc  à une 1ère solution ( mais je ne sais pas comment la concrétiser ) :
copier coller à partir de
-  mon fichier C:\aa\client\monfichier.xls
- ma feuille "coordonnées"
vers C:\aa\mabase.mdb
dans ma table "ma table".

la 2ème solution
avec une commande dans access, pouvoir formater toutes les cellules de la feuilles en format texte  avant de passer par la commande
DoCmd.TransferSpreadsheet acImport, 8, matable, FileToImport, True, "mafeuille!"

Petite précision,
je dois pouvoir traiter plusieurs fichiers par opération, donc je veux éviter les manipulations avec la souris.
Si quelqu'un avait le remède, ce serait magnifique.
Merci pour votre bonne attention.
JL

2 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 oct. 2006 à 09:41
Alors, pour la méthode que tu utilises actuellement et qui ne fonctionne pas, à savoir :
DoCmd.TransferSpreadsheet acImport, 8, matable, FileToImport, True, "mafeuille!"

Tu dis que "ma table" est le nom de la table ACCESS dans laquelle tu importes, elle devrait donc être entre double quote sauf si tu utilises une variable, ce qui ne semble pas être le cas. Idem pour le chemin, que contient FileToImport ?

Essaye pour voir de faire :
Dim MaTable as String
Dim CheminExcel as String
Dim NomFeuille as String

MaTable = "NomDeLaTableDansLaBase"
CheminExcel = "C:\Temp\Classeur1.xls"
NomFeuille = "Feuil1" & "!"

DoCmd.TransferSpreadsheet acImport, 8, MaTable, CheminExcel, True, "Feuil1!"

Chez moi, ça fonctionne très bien comme çà

Autre solution sans doute bcp plus simple : Tu écris la Macro directement dans ACCESS.
Dans les objets Macro, création d'une nouvelle macro.
Action : TransférerFeuilleCalcul
Type transfert : Importation
Type Feuille : Microsoft Excel 8-10
Nom Table : Table1 (à toi de choisir la bonne table :p)
Nom Fichier : C:\TEMP\Classeur1.xls (idem, à toi de choisir le bon chemin et fichier excel)
Contient nom champ : Oui (ton fichier Excel doit donc recréer la même architecture que table)
Etendue : Feuil1! (a toi de choisir la bonne feuille)

Dans ton formulaire, tu n'as plus qu'à mettre dans le code du bouton :
DoCmd.RunMacro NomDeLaMacro

Et hop, le tour est joué.
Molenn
0
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007
4 oct. 2006 à 12:05
Bonjour et merci pour la réponse.

DoCmd.TransferSpreadsheet acImport, 8, MaTable, CheminExcel, True, "feuille quelconque!" fonctionne très bien  en général et effectivement, il s'agit de variable.

Mon problème est que pour un type de fichiers qui m'est fourni par un client, cette commande ne marche pas alors que si je fais un copier de la feuille et coler dans la table, çà passe.

Pour ce qui est de la macro, çà ne va pas car j'importe les données de plusieurs fichiers xls à la fois.
salutations
jl
0
Rejoignez-nous