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 lance une macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut Macro qui lance une macro
    Bonjour,

    D'abitude, aucun probleme avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fichier = "Fichier.xls"
    MacName = Fichier & "!SuperMac"
    Workbooks(Fichier).Activate
    Application.Run MacName
    Je vais lancer la macro SuperMac dans le "Fichier" (different).

    D'habitude, pas de probleme.

    Sauf que la, j'ai "Runtime Error 1004, the macro Fichier.xls!SuperMac can't be found". Bon, il ment, elle existe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub SuperMac(a As Integer)
    Il faut visiblement le parametre a (0 supposons), j'ai essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fichier = "Fichier.xls"
    MacName = Fichier & "!SuperMac(0)"
    Workbooks(Fichier).Activate
    Application.Run MacName
    Pareil...

    Une idee?

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonsoir,

    ton fichier macro "supermac" comment est-il ouvert ?

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Hello, il est ouvert en lecture ecriture, pas de pb de ce cote la.

    Le parametre a de la macro SuperMac, c'est un parametre que le developpeur a mis rien que pour m'emmerder: il ne sert pas dans la macro...

    Evidemment, je ne peux pas (dans le sens "pas le droit") modifier la macro SuperMac (sinon, si je vire a As Integer ca marche).

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    J'ajoute que cette macro SuperMac est declanchable par le clic sur un bouton dans le fichier Fichier.xls qui execute une private sub On click qui fait un call Supermac(0)...

  5. #5
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    et ta macro est "privée" quan tu fais cela :

    dans ton code ..?

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Essaie comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.run Macname,0
    Si le classeur contenant la macro est ouvert dans la même application.
    Bon courage,

    PGZ

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Voir cette FAQ:
    http://excel.developpez.com/faq/?page=VBA#Run

    PS: et le concepteur n'a pas mis ce paramètre pour "t'emmerder", mais pour rendre le lancement de la macro impossible à partir du menu "Outils"->"Macros".

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Je reprends la structure:

    Fichier du developpeur
    Dans la sheet1, une macro se lance qand on clique sur un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
        ActiveSheet.Calculate
        Call MacCalc(1)
    End Sub
    Dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MacCalc(a As Integer)
    ...
    End Sub
    Notes que ce n'est pas une fonction, je ne peux donc pas stocker le resultat de la macro MacCalc dans une variable comme propose dans la FAQ. Oui le developpeur fait ca pour "cacher" la macro mais aussi pour faire chier tout le monde (de son propre aveu). Certes, j'aurai la solution de dupliquer son fichier, d'enlever son parametre mais je raterai la moindre update du fichier. Donc je dois lancer la macro.

    Donc de mon fichier, pour ce genre de truc, j'emploie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MacName = Fichier & "!MacCalc"
    Workbooks(Fichier).Activate
    Application.Run MacName
    Quand il n'y a pas de parametre, evidemment ca marche. J'ai essaye toutes les solutions proposees, cela ne marche pas: Call ne marche pas avec une macro en dehors du classeur courant,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MacName = Fichier & "!MacCalc"
    Workbooks(Fichier).Activate
    Application.Run(MacName,1)
    ->"expected: =", le probleme c'est que cette macro ne renvoie pas une valeur... Si je lui mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MacName = Fichier & "!MacCalc"
    Workbooks(Fichier).Activate
    tets=Application.Run(MacName,1)
    ->"the macro... can't be found" et puis comme dis, c'est pas une fonction donc pas cense renvoyer une valeur stockable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MacName = Fichier & "!MacCalc"
    Workbooks(Fichier).Activate
    Application.Run MacName,1
    ->"the macro... can't be found"

    J'ai eu l'idee de plutot lancer la macro CommandButton1_Click le probleme c'est que c'est une Private Sub...

    En gros, je m'en sors pas...

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Et ça ça donne quoi? (sans activer l'autre classeur donc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MacName = Fichier & "!MacCalc"
    Application.Run MacName,1

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Pareil... C'est a dire "macro not found"

    Et bien sur si j'enleve le "a as integer" ca marche, mais je peux pas modifier la macro du developpeur (je l'ai fait pour voir si j'avaias pas une erreur stupide quelque part).

    Donc le probleme, et je trouve des references que pour des fonctions malheureusement, est de lancer une macro avec des arguments dans un autre classeur...

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    A tout hasard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MacName = Fichier & "!MacCalc"
    Workbooks(Fichier).Activate
    Application.Run MacName,1%

  12. #12
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    lol, merci de ton aide au passage...

    Le "%", il me l'efface une fois la ligne validee, en mettant des parentheses, j'ai le "expected: =", et en lui mettant le "=", "macro not found"...

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Bon, autre piste: comment as-tu déclaré MacName?

  14. #14
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MacName As String
    Dim Fichier As String

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Dernière possibilité qui me vienne à la tête, sinon je ne vois pas. Essaye de mettre autre chose que 0 ou 1 comme argument: 2 par exemple.

  16. #16
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    J'abandonne, je travaille sur une copie du fichier a mes risques et perils, j'ai vire l'argument et ca marche maintenant...

    Merci pour votre aide a tous...

  17. #17
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Espère toujours que quelqu'un trouve la solution à ta réponse.

  18. #18
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Ouais mais si tu regardes la litterature sur internet, les lancement de macros d'autres classeurs avec arguments, tu ne trouves que des exemples avec des fonctions...

    Je commence a me demander si c'est possible pour un sub,...

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Eh bien ça marche sans arguments, mais peut-être qu'il y a le truc qu'on pouvait pas deviner lorsqu'on y met des arguments.

    Demande toujours au support microsoft si tu trouves rien: on sait jamais...

  20. #20
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 129
    Par défaut
    Tiens on va essayer le support MS, par pur curiosite, j'ai fait autrement.

Discussions similaires

  1. Macro Outlook qui lance une Macro Excel qui veut envoyer un mail = Bug
    Par Lameth dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/07/2008, 10h21
  2. Créer un bouton et qui lance une macro
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/09/2007, 14h13

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