Je suis nouveau sur ce forum et un grand débutant en VBA.
Je fais donc appel à des âmes chariables (et à celles les plus aguéries ) pour m'aider à résoudre mon problème.
Mon objectif est d'automatiser une tâche qui s'avére répétitive à partir du visual basic d'Access.
Le processus est le suivant :
1- Extraire une table access en excel
2- Création d'un TCD
Jusque là j'ai reussi à exporter ma table access en excel et à l'ouvrir automatiquement (je pense que pour les connaisseurs, c'est un jeu d'enfant mais pas pour moi ).
Public Sub Export()
DoCmd.TransferSpreadsheet acExport, , "chemin d'accés", False, ""
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.workbooks.Open ("chemin d'accés")
xlApp.Sheets("Nom de la feuille excel à ouvrir").Activate
End Sub
Je vous avouerez qu'ensuite, je ne sais pas du tout comment m'y prendre pour créer un TCD.
Si quelqu'un aurait une idée, elle serait la bienvenue.
Merci à tous
A voir également:
Export d'une table access en Excel et création d'un TCD
Je vous avouerez qu'ensuite, je ne sais pas du tout comment m'y prendre pour créer un TCD.
Si quelqu'un aurait une idée, elle serait la bienvenue.
Il y a une baguette magique dans Excel, Word et les anciennes versions de PowerPoint: L'enregistreur de macros. Tu ouvres l'enregistreur, tu cliques "Débuter l'enregistrement", tu fais ton TCD avec les menus et la souris. Quand ton TCD est terminé, tu cliques sur Terminer l'enregistrement et tu as une macro toute faite dans l'éditeur. Ensuite, tu peux rabouter ta macro à une autre, l'élaguer et la modifier, comme toute autre macro partie de rien.
Oui, c'est ce que j'ai tenté de faire mais j'ai eu un problème de liaison lorsque j'ai copié collé la macro d'excel à access.
Je te montre mon code avec erreur "Sub or function not defined"
Public Sub Export()
DoCmd.TransferSpreadsheet acExport, , "flux net positifs 012006", "C:\Documents and Settings\mallaoui\My Documents\TEST MACRO\FLUX NET POSITIFS\flux net positifs 012006.xlsx", False, ""
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.workbooks.Open ("Chemin d'acces.xlsx")
xlApp.Sheets("nom de la feuille").Activate
Range("A1:P304").Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"flux_net_positifs_012006!R1C1:R304C16", Version:=xlPivotTableVersion12). _
CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
, DefaultVersion:=xlPivotTableVersion12
Sheets("Sheet1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("FINAL STATUS")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("ScopeTrade")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Courbe")
.Orientation = xlRowField
.Position = 3
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("SommeDeCVEURO"), "Sum of SommeDeCVEURO", xlSum
Columns("B:B").Select
Selection.Style = "Comma"
Selection.NumberFormat = _
"_-* #,##0.0 _€_-;-* #,##0.0 _€_-;_-* ""-""?? _€_-;_-@_-"
Selection.NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
ActiveSheet.PivotTables("PivotTable1").PivotSelect "Courbe[All]", xlLabelOnly _
+ xlFirstRow, True
Range("B7").Select
With ActiveSheet.PivotTables("PivotTable1")
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
Range("A7").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("FINAL STATUS").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
Range("B8").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("ScopeTrade").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
End Sub