Bonsoir à touets et à tous,
J'espère que vous allez bien. Je reveins vers vous au sujet d'un problème concernant l'appel de macro dans une macro. La macro pincipale s'appelle MCBE_database qui a pour but de créer un fichier excel comme base de données.
Cette macro appelle la macro 'ouverture_fichier' qui a pour but d'ouvrir un fichier (
). Cette même macro appelle la macro "process sheet" qui a pour but de mettre à jour des liens Bloomberg (logiciel de finance) présents dans le fichier ouvert. Enfin la macro ProcessSheet appelle la macro saveSheet() pour enregistrer le fichier.
Alors si on résume, MCBE Database() appelle ouverture_fichier() qui appelle process_sheet() qui appelle savesheet().
Ci dessous, je vous mets le début de la macr principale à savoir MCBE database :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Sub MCBE_database()
Dim Cn As ADODB.Connection
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim fichier As String, Cellule As String, Feuille As String
Dim ranking As Sheets
Dim derniere As Cell
Dim ISIN As Range
Dim premiere_ligne, derniere_ligne, i As Integer
Dim wbExcel As Workbook
'ouverture du fichier MCBE
Call ouverture_fichier |
Ensuite voici la macro ouverture fichier()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub ouverture_fichier()
Dim wbExcel As Excel.Workbook
Set wbExcel = Application.Workbooks.Open("G:\Equipe\Convertibles\Recherche\Interne\Quantitative-screening\___Ranking Mirabaud MCBE & MCBG__\Global\MCBE_Scoring & Ranking.xls")
'On appelle le module ProcessSheet
Application.OnTime (Now + TimeValue("00:00:10")), "processSheet"
Application.Calculation = xlCalculationAutomatic
'On confirme la volonté d'ecraser la version actuelle du fichier
Application.DisplayAlerts = True
'On coupe la liaison avec le fichier Excel exterieur
Set wbExcel = Nothing
End Sub |
Et voici enfin les deux macros processsheet() & savesheet()
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub processSheet()
'Macro pour rafraichier les liens Bloomberg et enregistrer le fichier
Application.Run "RefreshEntireWorksheet"
Application.OnTime (Now + TimeValue("00:00:15")), "saveSheet"
End Sub
Sub saveSheet()
'Macro pour enregistrer le fichier
Workbooks("MCBE_Scoring & Ranking.xls").Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
Set wbExcel = Nothing
End Sub |
Le problème est lorsque j’exécute tout ce petti monde, et bien la ligne suivante de la macro ouverture_fichier() s'execute mal :
Application.OnTime (Now + TimeValue("00:00:10")), "processSheet"
Elle s’exécute mal car elle ne repart pas vers la macro processsheet et je ne comprends pas pourquoi. Par contre quand je prends la macro ouverture_fichier + processsheet +save_sheet dans un nouveau tableur ça marche parfaitement....
Auriez-vous une petite idée ?
Partager