Bonjour tout le monde,
J'ai besoin d'aide pour une action assez simple, mais je n'ai aucune idée de comment procéder.
Pour expliquer le contexte, je voudrais automatiser la mise à jour d'un fichier standard, que je dois effectuer une douzaine de fois à chaque nouvelle release de notre modèle de calcul (en général le fichier standard évolue en même temps, et donc nécessite d'être mis à jour), a des fins de test de non régression.
Ce fichier excel sert d'input pour le modèle. Ce fichier est standard et est 'fourni' sur la plate forme de notre modèle, c'est à dire que ne peux pas modifier son code.
Pour remplir ce fichier, il y a une macro qui s'appelle 'Upgrade engine', qui permet de récupérer les données d'un ancien fichier standard d'input et de les intégrer dans la nouvelle version de ce Template.
J'ai donc créé une autre macro, qui me permet d'ouvrir le template, d'appeler la macro upgrade engine, mais c'est là que je me trouve face à un mur. En effet, voici le code de upgrade engine :
La fonction :macros_Fn.Open_wkb()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sub UpgradeEngine() Set wkb_target = ThisWorkbook Set wkb_source = macros_Fn.Open_wkb() [...]
Cette fonction ouvre une fenêtre de dialogue permettant de parcourir les dossiers et de sélectionner le fichier excel qu'on veut utiliser en source.
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 Function Open_wkb() As Workbook Dim fileName As Variant With Application.FileDialog(msoFileDialogFilePicker) ' Makes sure the user can select only one file .AllowMultiSelect = False ' Filter to just keep the relevants types of files .filters.Add "Excel Files", "*.xlsm; *.xlsb", 1 .Show ' Extact path If .SelectedItems.Count > 0 Then fileName = .SelectedItems.Item(1) Else End End If End With If (fileName <> False) Then Set Open_wkb = Workbooks.Open(fileName:=fileName, IgnoreReadOnlyRecommended:=False, Editable:=False, ReadOnly:=True, UpdateLinks:=False) Else MsgBox "This file is already open. Please close it before launching the function." End End If End Function
Mon besoin est le suivant : Comment remplir cette fenêtre automatiquement à partir de ma macro?
Voici le code actuel de ma macro.
Merci par avance pour votre aide!!
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 Public gParamTab As Variant Public gHypTab As Variant Public gSourcefolder As String Public gBlankFolder As String Public gTgtfolder As String Public Const gParamTabColUseCase As Byte = 1 Public Const gParamTabColTTtgt As Byte = 2 Public Const gParamTabColTTSource As Byte = 3 Public Const gParamTabColFlagRetrieve As Byte = 4 Public Const gParamTabColTTCase As Byte = 5 Public Const gParamTabColFlagUpgrade As Byte = 6 Public Const gBlankTTName As String = "Table_Template_MVP_case" Public Const gExtension As String = ".xlsb" Sub init() gParamTab = Sheets("Parameters").Range("gParamTab") gHypTab = Sheets("NDD HYP").Range("gHypTab") gSourcefolder = Sheets("Parameters").Range("gSourcefolder") gTgtfolder = Sheets("Parameters").Range("gTgtfolder") gBlankFolder = Sheets("Parameters").Range("gBlankFolder") End Sub Sub updateTT() Call init Dim lFullname_blank As String, lFullname_source As String, lFullname_tgt As String Dim lGlobalrange As Variant Dim lGlobaltable() As Variant Dim lBlankTT As Workbook Dim lLastRow As Long Dim lSearchedVariable As Variant Dim lBlankTTupgradeengine As String lcol = 2 For lUsecase = 2 To UBound(gParamTab, 1) If gParamTab(lUsecase, gParamTabColFlagUpgrade) = 1 Then lFullname_blank = gBlankFolder & "\" & gBlankTTName & gParamTab(lUsecase, gParamTabColTTCase) & gExtension lFullname_source = gSourcefolder & "\" & gParamTab(lUsecase, gParamTabColTTSource) & gExtension lFullname_tgt = gTgtfolder & "\" & gParamTab(lUsecase, gParamTabColTTtgt) & gExtension Set lBlankTT = Workbooks.Open(lFullname_blank) lBlankTTupgradeengine = gBlankTTName & gParamTab(lUsecase, gParamTabColTTCase) & gExtension & "!UpgradeEngine.UpgradeEngine" Application.Run lBlankTTupgradeengine End If Next End Sub
Guillaume
Partager