Bonjour à tous,

Je rencontre un petit probleme d'exécution dans une macro dont le but est de transférer un tableau excel dans une table d'une base Access. Dans les deux cas je suis sous Office 2010.

J'utilise la méthode transferspreadsheet de l'objet Docmd. Le problème vient de la chaîne de texte de l'argument sensé contenir l'adresse de mon tableau Excel : si je laisse les $ dans l'adresse du Range j'ai une erreur d'exécution '3011' avec le message 'le moteur de base de données Microsoft Access n'a pas pu trouver l'objet Feuil1$$A$1:$B$4'. Tout se passe comme si le ! était remplacé par un $ dans ma chaîne d'adresse. Lorsque j'enlève les $ dans ma chaîne d'adresse, c'est-à-dire "Feuil1!A1:B4" au lieu de "Feuil1!$A$1:$B$4" ça fonctionne sans problème...

Auriez-vous une piste s'il vous plait ? je n'ai rien trouvé sur le forum ou les FAQ sur ce problème précis.

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Macro2()
Dim NClasseur As Workbook
Dim oAcApp As Object
Dim MyDatabase As Database
 
Set NClasseur = Application.ActiveWorkbook
 
Set oAcApp = CreateObject("Access.Application")
oAcApp.OpenCurrentDatabase "C:\Documents and Settings\My Documents\MaBase.mdb", False
 
Set MyDatabase = oAcApp.CurrentDb
 
oAcApp.Docmd.transferspreadsheet acImport, 8, _
    "Exemple", NClasseur.FullName, True, "Feuil1!$A$1:$B$4"
 
End Sub
Merci pour votre aide

Stargates