Jam
XLDnaute Accro
Bonjour à tous,
Je m'arrache les cheveux avec quelque chose qui devrait être être simple :
1. J'ai une requête paramétrée dans ma base Access qui me permet de sélectionner un ou plusieurs salariés
2. Je veux, à partir d'une procédure VBA Excel en utilisant ADO, passer l'argument de ma recherche à cette requête puis récupérer le résultat de la requête.
Autant j'arrivais à le faire avec DAO autant là je bloque
Mon code:
La requête (forme SQL):
Merci d'avance pour toute piste que vous pourriez m'indiquer.
Je m'arrache les cheveux avec quelque chose qui devrait être être simple :
1. J'ai une requête paramétrée dans ma base Access qui me permet de sélectionner un ou plusieurs salariés
2. Je veux, à partir d'une procédure VBA Excel en utilisant ADO, passer l'argument de ma recherche à cette requête puis récupérer le résultat de la requête.
Autant j'arrivais à le faire avec DAO autant là je bloque
Mon code:
VB:
'En-tête de module
Private Const myMDB As String = "D:\Mes documents\...\Effectifs.mdb"
Private Const sCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myMDB & ";User Id=Admin; Password"
Public oRst As ADODB.Recordset 'Public pour le réutiliser ailleurs
Sub TEST()
Dim oCmd As ADODB.Command
Dim objParams As ADODB.Parameters
Dim lAffected As Long
Dim sPath As String
Dim sConnect As String
' Create the connection string.
sConnect = sCon
' Create the Command object.
Set oCmd = New ADODB.Command
oCmd.ActiveConnection = sConnect
oCmd.CommandText = "xls_SearchNom"
oCmd.CommandType = adCmdStoredProc
' Create and append the parameters.
Set objParams = oCmd.Parameters
objParams.Append oCmd.CreateParameter("Test", _
adVarChar, adParamInput, 50)
Set objParams = Nothing
' Load the parameters and execute the query.
oCmd.Parameters("Test").Value = "JEA"
Set oRst = oCmd.Execute 'lAffected, , adExecuteNoRecords
ThisWorkbook.Worksheets(1).Cells(1, 1).CopyFromRecordset oRst
Set oCmd = Nothing
End Sub
La requête (forme SQL):
Code:
PARAMETERS [Test] VarChar ( 50 );
SELECT t_EFFECTIFS.MATRICULE, t_EFFECTIFS.NOM_PRENOM, t_EFFECTIFS.SOCIETE, t_EFFECTIFS.REGION, t_EFFECTIFS.SITE, t_EFFECTIFS.BASE_MENSUELLE, t_EFFECTIFS.NATURE_BUDGET, t_EFFECTIFS.CENTRE_ANALYSE, t_EFFECTIFS.MOIS, t_EFFECTIFS.ANNEE
FROM t_EFFECTIFS
WHERE (((t_EFFECTIFS.NOM_PRENOM) Like "*" & [Test] & "*") AND ((t_EFFECTIFS.NATURE_BUDGET)="réel"));
Merci d'avance pour toute piste que vous pourriez m'indiquer.