Bonjour,
j'utilise depuis lontemps avec succès la macro suivante qui me permet très souvent d'appliquer un script de formattage sur un fichier excel créé par export depuis Access.
Code pour l'export
Code Pour l'appel du script de reformattage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, From_Table, document, True Call Execute_Excel_Script(document, Excel_Workbook, recv![Script_Folder], recv![Excel_Script_File], Recexcel![Script_Name])
La limitation actuelle de ce systeme est qu'il n'y a pas de parametres lors de l'appel de mon Script dans Excel.
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
30
31
32
33
34
35
36 Sub Execute_Excel_Script(document As String, Excel_Workbook As String, Script_Folder As String, Excel_Script_File As String, Script_Name As String) On Error Resume Next Dim XLApp As Object Dim ExcelWasNotRunning As Boolean ' Indicateur de libération finale. Dim FullScript As String FullScript = Trim(Script_Folder) & Trim(Excel_Script_File) Set XLApp = GetObject(, "Excel.Application") If err <> 0 Then err.Clear ExcelWasNotRunning = True Set XLApp = CreateObject("Excel.application") Else ExcelWasNotRunning = False End If XLApp.Visible = True Set XlWkb = XLApp.Workbooks.Open(FullScript) ' ' lançement des macros automatiques d'Excel ' XlWkb.RunAutoMacros xlAutoOpen XLApp.Run Script_Name, document, Excel_Workbook, Excel_Script_File 'XlWkb.Save XlWkb.Close 'If ExcelWasNotRunning = True Then XLApp.Application.Quit 'End If Set XlWkb = Nothing Set XLApp = Nothing End Sub
Je voudrais par exemple, pour un export particulier, renommer la colonne B en "VOYAGE 27/05", en fonction des données qui sont dans la DB.
Il me faudrait donc parfois 0 parametre en plus, parfois N, en fonction du cas.
Je voudrais donc :
1) Appeler Sub Execute_Excel_Script avec un nombre de parametres variables de types variables
2) Exécuter XLApp.Run avec un nombre de parametres variables de type variable dépendant des parametres d'appel à Sub Execute_Excel_Script
Est-ce possible ?
Si je ne suis pas clair, n'hésitez pas à demander des précisions.
Ci-joint, un exemple de script excel lancé par ce systeme, mais actuellement sans parametre "data".
merci.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 Sub Gmain_Attendees_Presence_ART5_FOR(Document As String, Excel_Workbook As String, Excel_Script_File As String) ' ' Gmain_Attendees_Presence_ART5 Macro ' Macro enregistrée le 30/05/2006 par Admin ' Dim lrow As Long Dim xlrow As String Dim Range_Id As String Dim Saved_Range_id As String Dim Temp_Range_Id As String Dim off As Long Dim Column_from As String Dim Column_to As String Workbooks.Open Filename:=Document Windows(Excel_Workbook).Activate ActiveSheet.UsedRange ActiveSheet.UsedRange Range_Id = Get_Range_Id(ActiveSheet.UsedRange.Name) Saved_Range_id = Range_Id Column_from = Trim(Get_Column_From(ActiveSheet.UsedRange.Name)) Column_to = Trim(Get_Column_To(ActiveSheet.UsedRange.Name)) Range(Range_Id).Select '********************************************** '* real VB Script Start here * '********************************************** 'Header Line In Bold Range_Id = Column_from & "1:" & Column_to & "1" Range(Range_Id).Select Selection.Font.Bold = True 'Freeze panes Range("C2").Select ActiveWindow.FreezePanes = True 'Autofit Range_Id = Column_from & ":" & Column_to Columns(Range_Id).EntireColumn.AutoFit 'Autofit Columns("E:F").Select Selection.NumberFormat = "h:mm" Columns("E:F").EntireColumn.AutoFit Columns("C:C").Select Selection.NumberFormat = "d/mmm/yy" Columns("C:C").EntireColumn.AutoFit Columns("U:U").Select Columns("U:U").EntireColumn.AutoFit Selection.NumberFormat = "d/mmm/yy" Columns("U:U").EntireColumn.AutoFit 'get row number lrow = ActiveSheet.UsedRange.Rows.Count xlrow = lrow Range("C2").Select ActiveWorkbook.Save ActiveWorkbook.Close '********************************************** '* real VB Script Stop here * '********************************************** Windows(Excel_Script_File).Activate End Sub
Partager