Requete Access tourne pas ss VBA

Messages postés
18
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
5 septembre 2006
-
Messages postés
18
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
5 septembre 2006
-
Bonjour,

Mon prb est assez classique sur Access mais m'ennuie bcp.
Dans Access, J'ai une requete qui utilise un parametre d'un formulaire.
La requete tourne sous Access, un peu longue mais elle tourne.

Le prb, c ke qd je lexecute depuis une procedure VBA dans Excel, jobtiens le message derreur suivant : Trop peu darguments. Attendu 1.
Mes autres procedures dimport utilisant des requetes ss parametre tournent parfaitement.

Ci-dessous, le code que jutilise. Merci bcp. Si vous avez des ameliorations pour le code, je prends aussi...
Sub PRI_CASH_P()
Worksheets("PRI_CASH_P").Select
Cells.Select
Selection.delete Shift:=xlUp
Query1 ("Cash Payroll - Prod YTD Numbers & Amounts")
End Sub<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 Sub Query1(Queryname)
Dim ThisWorkbook, ThisSheet As String
Dim Msg, Title As String
Dim Destination As Range

 ThisSheet = ActiveSheet.Name
ThisWorkbook = ActiveWorkbook.Name

Set MainBook = Workbooks("Branch_TB.xls")
DatetoInput = MainBook.Worksheets("Command").Range("A94").Value
Set Destination = Cells(1, 1)

 'Parameters to modifiy (if needed)
MyTable = "AllRetailLoans 06.2006.mdb"
MyTableLocation = "H:\Moi\Toi\Doc_Prep" & MyTable
Connexion = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & MyTableLocation & ";"

Destination.Select   
With ActiveSheet.QueryTables.Add(Connection:=Array(Connexion, "Mode=ReadWrite;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:DatabasePassword="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global BulkTransactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), Destination:=Destination)

        .CommandType = xlCmdTable
        .CommandText = Array(Queryname)
        .Name = MyTable
        .SourceDataFile = MyTableLocation
        .REFRESH BackgroundQuery:=False
End Sub

6 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
Je pense que l' erreur est dans
Query1 ("Cash Payroll - Prod YTD Numbers & Amounts")
ce qui est certain c' est qu' il faut
- soit enlèver les parenthèses
  Query1 "Cash Payroll - Prod YTD Numbers & Amounts"

- soit faire un  appel avec Call
  Call Query1 ("Cash Payroll - Prod YTD Numbers & Amounts")

Il faudra voir aussi "Cash Payroll - Prod YTD Numbers & Amounts"
ça ne me dit rien le "&" à l' intérieur !
Messages postés
18
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
5 septembre 2006

je vais essayer le call mais la parenthese nest pas responsable de lerreur. Lerreur vient VRAIMENT du parametre car une requete ss parametre ds Access et importee depuis Excel fonctionne ss probleme de la sorte.
Messages postés
50
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
23 janvier 2008

salut,

juste comme ca en passant.... peut etre definir tes parametres..... non?

Dim MyTable as string
Dim MyTableLocation as string etc

carvals
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut carvals,
En fait dans le message d' erreur, il n' est pas question de Paramètre
"Trop peu darguments. Attendu 1",
Il s' agit plutôt d' argument et donc de Query1.
Dans ce cas il faut revoir L' appel à la procédure Query1.


Lorsque les arguments sont entre parenthèses il faut
référencer la procédure par le mot clé Call.
Ou bien supprimer les parenthèses.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Autre cause possible; l' argument lui même :
"Cash Payroll - Prod YTD Numbers & Amounts"
Messages postés
18
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
5 septembre 2006

C'est la requete le prb.... En fait, elle utilise une valeur qui se trouve dans un formulaire Access. Sous Access, ma requete fonctionne. La reference au formulaire Access est sans doute perdue lorsque je fait limport dans excel...