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 :

Macro qui appelle une macro a travers la fonction Application.Calculation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 20
    Par défaut Macro qui appelle une macro a travers la fonction Application.Calculation
    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 :

    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
    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()

    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
    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()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonsoir,

    Peut être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.Wait Now + TimeValue("00:00:10")
    Call processSheet
    Poulpe

  3. #3
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    Je suis d'accord avec Mr Poulpe quelquefois il faut du temps pour qu'il puisse finir la première action avant d’exécuter la seconde.

    Enfin je te conseil de mettre "la macro "process sheet" qui a pour but de mettre à jour des liens Bloomberg" à l'ouverture du classeur que tu ouvres comme cela tu as moins de macro qui appelle des macros qui appelle des macros ...
    le système poupée russe VBA n'aime pas trop. En gros cela marche jusqu'au jour où ça marche plus

    @+

Discussions similaires

  1. [XL-2003] exécution d'une macro qui appel un autre classeur sans raisons
    Par fllyann dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/03/2011, 10h38
  2. Appeler une macro composée d'une variable.
    Par Jacdan dans le forum Général VBA
    Réponses: 2
    Dernier message: 13/07/2008, 01h09
  3. Une macro qui supprime les macros ?
    Par GodOfTrolls dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/06/2008, 10h03
  4. macro qui crée une macro, est ce possible ?
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2007, 09h43
  5. Macro Qui Appelle Une Autre Macro
    Par aguirre49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/06/2007, 14h58

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