Bonjour,
Ne sachant pas si je dois mettre mon problème dans VB.NET, Access ou Excel je l'ai mis dans Office étant donnée que c'est une question d'ordre "général"
Mon problème est le suivant, j'ai créer un fonction dans le code de la base Access permettant d'éditer mon tableau croisé dynamique se trouvant dans Excel via la fonction SQL et la requête de ma base Access. Ce tableau sert essentiellement a faire l'affichage d'un graphique (je ne souhaite pas le faire sous Access si possible).
Cette fonction marche très bien mais le problème est lors du "Classeur.RefreshAll" qui fait une erreur car la base est ouverte, idem si je clique sur le bouton Actualiser dans Excel, sauriez-vous comment détourner ou enlever cette erreur?
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
17
18
19
20
21
22
23
24
25
26
27
28
29 Function OpenExcel(CheminDocument As String, FeuilleClasseur As String, Optional TableauCroiseDynamique As String, Optional sql As String) Dim Xl As Excel.Application Dim Classeur As Excel.Workbook Dim Feuille As Excel.Worksheet Dim Table As Excel.PivotTable 'Ouvre Excel via le chemin donné en paramètres et se place sur le classeur donné en paramètre Set Xl = New Excel.Application 'Lance Excel Xl.Visible = True 'L'utilisateur peut voir le classeur Set Classeur = Xl.Workbooks.Open(CheminDocument) 'Ouvre le classeur correspondant au chemin du fichier (donné en paramètre) Set Feuille = Classeur.Worksheets(FeuilleClasseur) 'Ouvre le classeur à la feuille correspondante au nom (donné en paramètre) If Not IsNull(TableauCroiseDynamique) Then 'Si il y a un nom de pivot table Set Table = Feuille.PivotTables(TableauCroiseDynamique) 'Positionne sur le tableau croisé correspondant au nom (donné en paramètre) If Not IsNull(sql) Then 'Si il y a une requête SQL Table.PivotCache.CommandText = sql 'Met la requête SQL dans le cache du tableau croisé (donné en paramètre) End If End If Classeur.RefreshAll 'Actualise le classeur (et donc le tableau croisé dynamique) Classeur.Save 'Sauvegarde le classeur 'Classeur.Close True 'Ferme le classeur 'Xl.Quit 'Ferme excel End Function
Je pense que l'erreur vient du fait d'Office et du fichier .laccdb créée au démarage de la base et qui la verouille mais je ne vois pas comment détourner ce problème
P.S. : Mon classeur Excel est lié avec la base Access via la connexion OLEDB je crois (fait dans Excel Onglet Données - A partir du fichier Access)
Merci d'avance.
Partager