Tableau Croisé Dynamique dans Excel, en VBA depuis ACCESS

JCDussDuss Messages postés 24 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 20 novembre 2008 - 21 nov. 2005 à 17:30
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 22 nov. 2005 à 16:07
Bonjour à Toutes et à tous,


J'ai besoin d'un petit coup de main...


Je suis entrain de développer une petite appli en VBA sous Access. Cette appli lance des requetes dans mes tables, en fonction de mes besoin, puis elle ouvre Excel, colle les données de mes requetes dans des feuilles excel. Le but étant d'ensuite faire des graphes dans Excel (j'ai pas le choix, c'est la demande, format Excel).


Certains graphes mettent en évidences plus de deux données. Ces graphes analysent un réseau de téléphonie (Ex : Abscisse, les N° de semaines, ordonnées le Nb de Communications,et 3 courbes représentant chacune un des 3 Type de Communication (local, National vers Portables).Donc sur ma feuille excel, en plus d'avoir le graphe il me faut un Tableau Croisé Dynamique !!!


Lorsque mes données sont arrivées dans Excel (via mon code depuis access), j'arrive à faire le TCD de ces données à la main, si je l'enregistre en Macro, j'arrive à le lancer en auto depuis Excel... J'ai pompé le code de cette macro et essaye de l'ajouter à mon code d'appli, pour générer directement le TCD depuis mon Appli acces, mais la, ca ne marche pas.... si qq'un voit le Pb, je suis preneur, il faut que je finisse cette appli pour la fin du mois... je suis mal...


les def plus haut sont :
"""""""""""""""""
Set xlFichier = CreateObject("Excel.Application")
Set xlClasseur = xlFichier.Workbooks.Add
Set xlfeuille = xlClasseur.Worksheets(1)
"""""""""""""""""
Déja le premier paragraphe ne passe pas
Il me met un joli :
"Propriété ou méthode non géré par cet Objet"


c'est la que sa merde......::::
""""""""""""""""""""""""""""""""


xlClasseur.Worksheets("Ensemble des Usages").PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Ensemble des Usages'!R1C1:R50C3").CreatePivotTable TableDestination:= _
"'[Analyse Com.xls]Ensemble des Usages'!R3C4" _
, TableName:="Tableau croisé dynamique5", DefaultVersion:= _
xlPivotTableVersion10



ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Semaine" _
)
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields( _
"Type de COM")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique5").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique5").PivotFields("Nb de COM"), _
"Somme de Nb de COM", xlSum
ActiveWorkbook.ShowPivotTableFieldList = False



""""""""""""""""""""""""""""""""""""""""""""""""""



A vrai dire je ne sais pas si ce que j'essaye de faire est possible, si vous avez une idée, je vous remercie d'avance....

JCDussDuss

1 réponse

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
22 nov. 2005 à 16:07
1/
Pour ce message là :"Propriété ou méthode non géré par cet Objet"
=> il faut que dans l'éditeur VBA, tu déclares Excel en référence ( Menu Outils\référence\Microsoft Excel 11.0 Object Library si tu es en ACCESS 2003)
En déclarant la référence déjà, ça suffira peut être à faire fonctionner le reste, le code est peut être bon, je ne l'ai aps regardé encore.

2/
Ensuite, une petite réflexion :
Les données que tu exportes sont toujours de la même forme ? (le contenu peut changer, le nombre d'enregistrement aussi, mais tes différentes colonnes ?)
Parce que le plus simple, c'est encore je pense de faire un modèle de fichier Excel, une feuille dans laquelle tu colleras à chaque fois tes données (exporte manuellement une fois une requête pour faire la première mouture) et crée ton tableau croisé dynamique sur ces données pour définir un tableau de référence.

Ensuite, ton code ACCESS n'a plus qu'à gérer 3 choses :
1 - Ouverture du fichier excel modèle.
2 - Exportation de la requête dans le modèle
3 - Rafraîchir les données.

Tu peux faire la même chose à partir d'un bouton dans EXCEL :
1 - Importation de la requête à l'endroit voulu.
2 - Rafraîchir la liaison avec la requête.

A toi de voir quelles méthodes tu préfères.

Molenn
0
Rejoignez-nous