Bonjour à tous les développeurs,
je vais vous expliquer les problèmes que j'ai avec ma base de donnée en Ms Access 2007.
J'ai un portail de statisques développer en une version antérieur de Ms Access (J'ignore la version d'origine). Mon client veut ajouter un rapport de synthèse qui génère de façon dynamique des graphiques dans un classeur Excel. Chaque graphique doit être une image et doit être formater avec d'autre informations.
J'ai donc construit le code pour générer mes graphiques dynamiques dans Excel, et tant que j'utilisais mon code statique, je pouvais générer 5 graphiques sans aucun problème et ajouter un nombre x de workbooks.
Mais comme j'ai 35 graphiques différents à générer, j'ai automatisé le tout dans des boucles qui extraient les paramètres des tables Access. Depuis, pour une raison que j'ignore, le code qui me permettait de réutiliser un workbook ouvert ou de créer une référence à Excel ne fonctionne plus. Je ne comprend pas pourquoi. Le code n'a pas changé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Set xla = GetObject(, "Excel.Application") If Err.Number <> 0 Then Err.Clear Set xla = CreateObject("Excel.Application") xla.Workbooks.Add End If xla.Windows(xla.ActiveWorkbook.Name).Activate xla.Visible = True
Maintenant GetObject retourne toujours 0, même quand il n'y a pas d'objet Excel.Application en mémoire. Le code bloque sur la commande d'activation.
Mon deuxième problème est situé au niveau de la suppression des feuilles de traitement des données. Je sais utiliser le code suivant pour annuler le message de confirmation de la feuille.
Cela marche bien, mais mon problème c'est qu'il finis par générer un message d'avertissement disant qu'une des feuilles de donnée possède des références externes invalides. Pourtant, je détruit la feuille source et le graphique. Je ne conserve que la feuille avec les images. Comment faire pour caché ce genre de message.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 xls.DisplayAlerts = False xls.Sheets("Data").Delete xls.DisplayAlerts = True
Je joins un exemple de BD access.
Merci pour votre aide.
Partager