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 :

Exécuter une macro à partir d'un bouton de commande d'un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut Exécuter une macro à partir d'un bouton de commande d'un autre classeur
    Bonsoir le forum

    Le code ci-dessous me permet d'ouvrir un autre classeur.
    je souhaite lorsque le classeur sera ouvert d'exécuter les macros contenus dans la commande bouton intitulé cmde_bilan".
    J'ai essayé des recherches mais la plupart c'est l'exécuter une macro à partir d'un autre classeur.
    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
    Dim wk1 As Workbook, wk2 As Workbook
     
    Dim spath As String, sfile As String
     
    Dim sh As Worksheet ', sh1 As Worksheet
     
    Set wk1 = ThisWorkbook
     
    spath = "C:\Users\" & Environ("UserName") & "\Desktop\BILAN_DAC_2018\"
     
    sfile = "Traitement_Bilan_agences_2018.xlsm"
     
    Set sh = Sheets("MENU")
     
    If Dir(spath & sfile) = "" Then MsgBox "Fichier inexistant pour l'utilisateur" & " " & sh: Exit Sub
     
        Workbooks.Open Filename:=spath & sfile
     
        Application.Run "sfile.sh.Cmde_Bilan_click"
    L'erreur se situe au niveau de la dernière ligne avec pour message d'erreur :"impossible d'exécuter la macro.il est possible quelle ne soit pas dans ce classeur ou que toutes les macros soient désactivées.
    Pourtant mes macros sont activées.
    merci de m'aider

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par capi81 Voir le message
    Bonjour,

    Soient deux fichiers Fichier 1.xlsm et Fichier 2.xlsm.

    Fichier 2 contient une macro Macro1 enregistrée dans un module standard et l'onglet 1 contient un bouton qui ne fait que lancer la macro1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit
     
    Private Sub CommandButton1_Click()
            Macro1
    End Sub
    Si vous utilisez l'enregistreur de macro depuis le fichier 1 pour voir comment VBA lance la macro 1 du fichier 2, vous verrez sans doute ceci pendant la séquence :
    Pièce jointe 360920

    Le résultat de la macro du fichier 1 donne ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit
     
    Sub Macro2()
        Application.Run "'Fichier 2.xlsm'!Macro1"
    End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Bonjour Eric
    Merci pour votre contribution.
    Dans mon cas le bouton de commande exécute plusieurs macros en même temps (macro1, macro2..macro5).
    Du coup votre solution qui permet d'exécuter une seule macro ne s'adapte pas à ma situation.
    Si la methode Run permettait d'exécuter le bouton de commande, mon problème serait résolu.
    Comment faire pour exécuter mon bouton de commande lorsque le fichier 2 est ouvert (c'est à partir du fichier 1 que j'ouvre le fichier 2).
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par capi81 Voir le message
    Imaginez maintenant que ma macro1 (dans un module standard) englobe vos différentes macros lancées par votre bouton....

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Donc si j'ai bien compris, je dois créer une macro qui permet d'appeler les autres macros.
    Je viens de créer cette macro donc je vais appliquer la méthode run et vous revenir.
    Si ma logique n'est pas bonne merci de me recadrer.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par capi81 Voir le message
    Mettez vos macros dans des modules standards et n'utilisez les boutons que pour en faire l'appel.

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    au sein d'un même projet pas besoin de Run, juste voir l'aide VBA interne de la méthode Call

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Bonsoir Marc
    Merci pour votre conseil.
    Je suis pas sûr d'avoir bien compris.
    En passant par l'enregistreur de macro, la methode Run est utilisée.
    Pour faciliter ma compréhension, pouvez-vous réaliser quelque chose dans ce sens?
    Merci

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Juste en lisant l'aide VBA interne :
    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
    Dim S$
     
    Sub DCrypto()
        For C& = Len(S) To 1 Step -1
            T$ = T$ & Chr$(255 - Asc(Mid$(S, C, 1)))
        Next
             S = T
    End Sub
     
    Sub Demo()
        S = "Þߌ‹™ßŒš“ß‹–ž™ß‹™™šØ³"
        Call DCrypto
        MsgBox S
        S = "Þß‘–‹ž›’ßž“ßßšŒ–ž“›ß‘šØ±"
        DCrypto
        MsgBox S
    End Sub
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. Exécuter une macro à partir d'une séléction
    Par Kayzerovic dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 17/09/2017, 13h04
  2. [XL-2016] Lancer une macro à partir d'un bouton quelle que soit la feuille
    Par canicothy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2017, 11h42
  3. Réponses: 8
    Dernier message: 27/01/2015, 18h42
  4. [OL-2003] Exécuter une macro à partir d'un script
    Par Dailyplanet dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 25/09/2009, 15h14
  5. Copier une macro personnelle dans un bouton de commande
    Par chakev dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/05/2008, 16h30

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