Re-re-re, :0)
Effectivement, plus je cerne le problème, plus on approche de la solution !
On va finir en travaillant en deux temps : 1, compléter la macro Excel, 2, créer une nouvelle macro Access ;
Bon, j'ai triché, je t'ai mis le code juste ci-dessous...
1 - EXCEL :
'au préalable, tu dois récupérer la valeur de ton critère avec les paramètres ci-dessous
Dim ValeurAEnvoyer as string
ValeurAEnvoyer= 'à toi de le récupérer dans Excel !
Exemple : ValeurAEnvoyer=range("B4").value
'on ajoute deux lignes dans le code après la première ci-dessous
AppAccess.Run "Appel_Excel", ValeurAEnvoyer
AppAccess.Application.Visible = True
AppAccess.DoCmd.OpenReport "NomDeTonRapport", acViewPreview
'et on supprime celles-ci qui ferment Access ci-dessous ! (surtout pas set appacess=nothing)
'on quitte l'objet Access
AppAccess.Application.Quit
2 - ACCESS :
Dans l'onglet 'Modules', faire 'New' / 'Nouveau' puis insérer le code ci-dessous :
Sub Appel_Excel(StrProduit as string)
Dim Db As DAO.Database ''' base de données Access
Dim StrSQL As String ''' le code SQL de la requête (filtré)
Dim qdfAction As QueryDef ''' la requête
DoCmd.SetWarnings False ''' on désactive le mode alerte
Set Db = CurrentDb()
Set qdfAction = Db.QueryDefs("NomDeTaRequete")
'on modifie la requête avec la valeur envoyée depuis Excel
StrSQL = "SELECT [NomdetaTable].* FROM [NomdetaTable] WHERE [NomdetaTable].NomDuChampFiltré=" & StrProduit
********* EXEMPLE ********
StrSQL = "SELECT [tbl_Produits].* FROM [tbl_Produits] WHERE [tbl_Produits].Materiaux=" & StrProduit
(sachant que l'on envoie StrProduit="béton" depuis Excel par exemple)
********************* FIN EXEMPLE
'on affecte la condition SQL construite
qdfAction.SQL = StrSQL
DoCmd.SetWarnings True ''' on réactive le mode alerte
Db.Close ''' on ferme
End Sub
--> !!! bien enregistrer le tout
On devrait pouvoir obtenir un résultat pas trop mal, c'est-à-dire qu'à l'éxécution dans Excel, tu n'as rien à faire et il t'ouvre le rapport Access souhaité. Si ce n'est pas le cas, j'ai encore un petit complément de code.
Bonne continuation !
Clément
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." (devise Shadock)