IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplir une fenêtre FileDialog avec une autre macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Actuaire
    Inscrit en
    Juillet 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 49
    Par défaut Remplir une fenêtre FileDialog avec une autre macro
    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 :

    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()
     
    [...]
    La fonction :macros_Fn.Open_wkb()

    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
    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.

    Mon besoin est le suivant : Comment remplir cette fenêtre automatiquement à partir de ma macro?


    Voici le code actuel de ma macro.

    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
    Merci par avance pour votre aide!!

    Guillaume

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    L'objet FileDialog propose plusieurs propriétés pour personnaliser l'affichage.
    Que veux tu "remplir automatiquement" ?

Discussions similaires

  1. [XL-2010] ajouter une macro copier avec liaisons à une autre macro (VBA)
    Par boonboy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2016, 15h58
  2. [XL-2010] Modif code d'une macro avec une autre macro?
    Par Master_x_99 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2015, 07h51
  3. Réponses: 8
    Dernier message: 10/02/2014, 14h57
  4. [XL-2010] Modifier une macro avec une autre macro
    Par bifconsult dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/03/2012, 15h30
  5. [XL-2003] Effectuer un compte à rebours simultanément avec une autre macro?
    Par mustapha.ezzaouia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/12/2009, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo