Bonjour à tous.
Habituellement, je cherche, je teste et je trouve la réponse.
Mais cette fois-ci, je cale un peu.
Je travaille sur des créations de rapports statistiques sur Excel.
Des connexions de données sont faite de Access vers Excel.
Via des requêtes SQL, ces données sont importées dans des TCD qui eux même sont reliés à des graphiques.
Voila ce que j'essaye de faire:
Excel => connexion ouverte => Access
Access => requete SQL => Recordset
TCD <= Recordset
Excel <= connexion fermée <= Access
J'ai réussi toute les étapes sauf << TCD <= Recordset >>
Je ne peux pas vous joindre le fichier, ni la base access.
Parcontre, je peux vous joindre le code.
J'ai découpé mon code en plusieurs séquence pour le rendre plus lisible.
(en rouge la partie ou je suis bloqué)
[EDIT= J'oubliai il faut activé dans la bibliotèque "Microsoft Activex Data Objects 2.8 Librairy]
'stockage des données variable pour la connexion:
------------------
Sub Prc_Start()
Call fct_Connection_Oracle2("MS Access Database", _
"\\MonLienReso\Dossier\Fichier_Access.accdb", _
"\\MonLienReso\Dossier\\")
End Sub
------------------
'Procédure de connexion:
------------------
Sub fct_Connection_Oracle2(ByVal NomDuDSN As String, ByVal LienDuDBQ As String, ByVal LienParDefault As String)
'Déclaration de la variable de connexion
Dim cNx As ADODB.Connection
Set cNx = New ADODB.Connection
'Définition de la chaîne de connexion
cNx.ConnectionString = "" _
& "DSN=" & NomDuDSN & ";" _
& "DBQ=" & LienDuDBQ & ";" _
& "DefaultDir=" & LienParDefault & ";" _
& "DriverId=25; FIL=MS Access; MaxBufferSize=2048; PageTimeout=5;"
cNx.Open
Call fct_Access_recorset(cNx)
cNx.Close
Set cNx = Nothing
End Sub
------------------
'Procédure de stockage de donnée dans un recordset
'puis écriture dans un TCD.
------------------
Sub fct_Access_recorset(ByRef cNx As ADODB.Connection)
Dim oRS As ADODB.Recordset
Dim SQL_Qry As String
Dim pvt As PivotTable
Set oRS = New ADODB.Recordset
'lancement de la requete SQL
Call Qry_Agence("Ma_table_access", "Mon_Agence_cible", SQL_Qry)
'stockage dans le recordset
oRS.Open SQL_Qry, cNx, adOpenStatic
'à partir d'ici je cale.
Set pvt = Worksheets("Ma_feuille").PivotTables(1)
pvt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pvt.PivotCache.Refresh
pvt.pivotcache.Recordset oRS
pvt.PivotCache.Refresh
oRS.Close
Set pvt = Nothing
Set oRS = Nothing
End Sub
------------------
'Requête SQL
------------------
Sub Qry_Agence(ByVal table_name As String, ByVal agence_name As String, ByRef SQL_Qry As String)
'agence de regroupement = champs de la table pour récupéré les données agencesSQL_Qry = "SELECT * FROM `" & table_name & "` WHERE `agence de regroupement` like ('%" & agence_name & "%')"
End Sub
Je continu de chercher de mon coté.
Si vous avez une solution ou même une piste, je suis preneur.
Bon courage.
Habituellement, je cherche, je teste et je trouve la réponse.
Mais cette fois-ci, je cale un peu.
Je travaille sur des créations de rapports statistiques sur Excel.
Des connexions de données sont faite de Access vers Excel.
Via des requêtes SQL, ces données sont importées dans des TCD qui eux même sont reliés à des graphiques.
Voila ce que j'essaye de faire:
Excel => connexion ouverte => Access
Access => requete SQL => Recordset
TCD <= Recordset
Excel <= connexion fermée <= Access
J'ai réussi toute les étapes sauf << TCD <= Recordset >>
Je ne peux pas vous joindre le fichier, ni la base access.
Parcontre, je peux vous joindre le code.
J'ai découpé mon code en plusieurs séquence pour le rendre plus lisible.
(en rouge la partie ou je suis bloqué)
[EDIT= J'oubliai il faut activé dans la bibliotèque "Microsoft Activex Data Objects 2.8 Librairy]
'stockage des données variable pour la connexion:
------------------
Sub Prc_Start()
Call fct_Connection_Oracle2("MS Access Database", _
"\\MonLienReso\Dossier\Fichier_Access.accdb", _
"\\MonLienReso\Dossier\\")
End Sub
------------------
'Procédure de connexion:
------------------
Sub fct_Connection_Oracle2(ByVal NomDuDSN As String, ByVal LienDuDBQ As String, ByVal LienParDefault As String)
'Déclaration de la variable de connexion
Dim cNx As ADODB.Connection
Set cNx = New ADODB.Connection
'Définition de la chaîne de connexion
cNx.ConnectionString = "" _
& "DSN=" & NomDuDSN & ";" _
& "DBQ=" & LienDuDBQ & ";" _
& "DefaultDir=" & LienParDefault & ";" _
& "DriverId=25; FIL=MS Access; MaxBufferSize=2048; PageTimeout=5;"
cNx.Open
Call fct_Access_recorset(cNx)
cNx.Close
Set cNx = Nothing
End Sub
------------------
'Procédure de stockage de donnée dans un recordset
'puis écriture dans un TCD.
------------------
Sub fct_Access_recorset(ByRef cNx As ADODB.Connection)
Dim oRS As ADODB.Recordset
Dim SQL_Qry As String
Dim pvt As PivotTable
Set oRS = New ADODB.Recordset
'lancement de la requete SQL
Call Qry_Agence("Ma_table_access", "Mon_Agence_cible", SQL_Qry)
'stockage dans le recordset
oRS.Open SQL_Qry, cNx, adOpenStatic
'à partir d'ici je cale.
Set pvt = Worksheets("Ma_feuille").PivotTables(1)
pvt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pvt.PivotCache.Refresh
pvt.pivotcache.Recordset oRS
pvt.PivotCache.Refresh
oRS.Close
Set pvt = Nothing
Set oRS = Nothing
End Sub
------------------
'Requête SQL
------------------
Sub Qry_Agence(ByVal table_name As String, ByVal agence_name As String, ByRef SQL_Qry As String)
'agence de regroupement = champs de la table pour récupéré les données agencesSQL_Qry = "SELECT * FROM `" & table_name & "` WHERE `agence de regroupement` like ('%" & agence_name & "%')"
End Sub
Je continu de chercher de mon coté.
Si vous avez une solution ou même une piste, je suis preneur.
Bon courage.
Dernière édition: