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écution d'une macro à partir d'un fichier différent ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut Exécution d'une macro à partir d'un fichier différent ?
    Je vous explique mon problème.

    Actuellement, j'ai plusieurs fichiers excel contenant tous des macros qui s'exécute à l'ouverture du fichier.

    Il faudrait maintenant que j'arrive à créer un petite fenêtre permettant de sélectionner via une liste déroulante le fichier à exécuter après avoir saisir une année.

    La question est donc de savoir comment lancer l'exécution d'un fichier Excel à partir d'un autre et de passer en plus en paramètre, l'année saisie ?

    Je cale.

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Zebulon777,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "PERSO.XLS!MaMacro"

  3. #3
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Merci, je vais essayé ça ce matin.

    Et pour le passage de paramètres ? Comment faire ?

  4. #4
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Bon, pas beau l'avion : ça ne fonctionne pas.

    Il exécute bien le fichier XLS suivant, à chaque fois j'ai un message d'erreur

    "Erreur d'exécution 1004, Impossible de trouver la macro"

    Allo, Docteur ?

  5. #5
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Zebulon777,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = Application.Run("Perso.xls!Masum", 2, 4)

  6. #6
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Merci Isa, mais ça ne fonctionne pas.

    D'après ce que je comprends, il faut que ce soit un fichier MACRO or j'utilise des feuilles EXCEL contenant des macros.

  7. #7
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Zebulon777,

    mais non c'est sur excel, j'ai mit la function suivante dans le perso,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function MaSum(a As Integer, b As Integer) As Integer
    MaSum = a + b
    End Function
    et la macro suivante dans le fichier actif (classeur1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    resultat = Application.Run("Perso.xls!Masum", 2, 4)
    End Sub
    le résultat est bon = 6

    note/

    il faut bien sur que le fichier contenant la Function soit ouvert, que ce soit un xls ou un xla. si c'est un xla tu n'as qu'à cocher sa référence au menu, Outils, Macro complémentaire.

  8. #8
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    C'est fou ça, impossible d'ouvrir le fichier en auto, ce qui explique donc que la SUB ne se lance pas.

    Voici le code d'ouverture que j'utilise, mais il ne fonctionne pas et je ne vois pas du tout d'où ça peu venir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set AppXL = CreateObject("excel.Application")
    WNomFichier_XLS = "D:\STAT PLTF\Fic_AUTO.xls"
    AppXL.Workbooks.Open Filename:=WNomFichier_XLS
    Une idée ?

    Bon ben v'la autre chose, j'ai une erreur "Espace pile insuffisant"...

    Heu, alors là, je suis totalement paumé.

    Pour ouvrir le 2ème fichier excel, j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Workbooks.Open(Filename:="D:\STAT PLTF\PLTF_AUTO.xls"). _
            RunAutoMacros Which:=xlAutoOpen
    Resultat = Application.Run("PLTF_AUTO.xls!Chargement_AUTO", G_ANNEE_LANCEUR)
    La SUB Chargement_AUTO se trouve dans le module1 du 2ème fichier et lance une autre sub qui se trouve dans la "form" de ce 2ème fichier.
    L'erreur survient au moment de l'appel de cette sub.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Chargement_AUTO(P_Annee)
    '    Call Initialisation
        FORM_ChgFic_PLTF.C_Annee.Value = P_Annee
        Call Chargement_AUTO(P_Annee) -> Ligne qui provoque l'erreur.
    End Sub
    Je suis vraiment dans le noir...
    Au secours...

  9. #9
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Bon, merci de ton aide, j'ai réussit à trouver, en fait j'avais une procédure qui s'appelait elle-même...

    Par contre, comment redonner la main au premier fichier XLS après la fin du second ?

  10. #10
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Zebulon777,

    avant d'appelez ton fichier, instancie une variable objet de cette facon,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set ici = ThisWorkbook
    'ouverture de l'autre fichier
    ici.Activate ' redonner la main au premier

  11. #11
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Donc ça donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set ici = ThisWorkbook
        Workbooks.Open(Filename:="D:\STAT PLTF\PLTF_AUTO.xls"). _
            RunAutoMacros Which:=xlAutoOpen
    Resultat = Application.Run("PLTF_AUTO.xls!Chargement_AUTO", G_ANNEE_LANCEUR)
    ici.Activate
    C'est bien ça ?

  12. #12
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Zebulon777,

    oui, je crois que c'est bon.
    est ce que ton fichier s'ouvre dans la même instance ?

  13. #13
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Que veux-tu dire par là ?

    De toutes façons, ça ne fonctionne pas.
    Le premier fichier ne récupère pas la main.
    1 - Je lance le fichier XLS1
    2 - XLS1 lance XLS2
    3 - XLS2 s'exécute, créé des tableaux et les enregistre dans des répertoires spécifiques.
    4 - XLS2 se ferme (activeworkbook.close)
    (5 - XLS1 devrait reprendre la main pour réafficher la "form" de départ.)

    Le traitement s'arrête alors qu'il reste des instructions à exécuter dans XLS1.

    J'espère que je suis clair, car c'est vraiment le bordel, cette application.

  14. #14
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    copie cette macro "vérifierWK" au même endroit que la macro qui ouvre le fichier et execute la macro qui ouvre le fichier, une fois le fichier ouvert execute la macro "vérifierWK" pas à pas en laissant le curseur sur la variable fichier, pour voir si le fichier que tu vient d'ouvrir est dans cette application,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub vérifierWK()
    For Each wk In Application.Workbooks
    fichier = wk.Name
    Next
    End Sub

  15. #15
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Rien à faire, je n'y arrive pas.

    Le 2ème fichier prend la main et je n'arrive pas à revenir manuellement au premier.
    Donc impossible d'exécuter ta macro à partir du 1er fichier.

    (En tout cas, je te remercie beaucoup beaucoup de ta patience et de ton aide)

  16. #16
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    essaie sans la Function ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub xx()
    Set ici = ThisWorkbook
    Workbooks.Open Filename:="D:\STAT PLTF\PLTF_AUTO.xls"
    ici.Activate
    End Sub

  17. #17
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Oui, mais comment je passe mes paramètres au 2ème fichier ?

    Actuellement, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Set ici = ThisWorkbook
    G_ANNEE_LANCEUR = C_Annee.Value
    WFichierXLS = G_DOSSIER_MACROS & "PLATEFORMES_MACROS_AUTO.xls"
    Workbooks.Open(Filename:=WFichierXLS).RunAutoMacros Which:=xlAutoOpen
    Resultat = Application.Run("PLATEFORMES_MACROS_AUTO.xls!Chargement_AUTO", G_ANNEE_LANCEUR, G_MACHINE)
    ici.Activate

  18. #18
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    fait le test, c'est seulement pour essayer le localiser le probleme,

  19. #19
    Membre actif Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 320
    Points : 286
    Points
    286
    Par défaut
    Je dois y aller, je ferai le test lundi.
    Merci encore de ta patience, bon weekend et à lundi.

Discussions similaires

  1. [WD-2007] Exécution d'une macro à partir d'un modèle .dotm externe ?
    Par boddhi dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/04/2010, 09h11
  2. [XL-2003] Masquer l'ouverture de fichiers pendant l'exécution d'une macro
    Par thibane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2009, 08h10
  3. Réponses: 1
    Dernier message: 11/08/2008, 12h38
  4. exécution d'une macro sans ouvrir le fichier
    Par sash6 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/05/2008, 11h49
  5. Réponses: 3
    Dernier message: 16/05/2007, 13h48

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