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 :

Affecter une macro avec argument(s)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut Affecter une macro avec argument(s)
    Bonjour,

    Je cherche à affecter une macro qui aurait un ou des arguments au une forme automatique ou un contrôle sur une page.
    Dans la boite de dialogue "affecter une macro", dans le champs "nom de la macro" j'ai essayé sans succès
    'eco-conception2 (version 31 08 2009) .xls'!HideAndReturn ("Eco-conception")
    'eco-conception2 (version 31 08 2009) .xls'!HideAndReturn "Eco-conception"

    Est-ce qu'il est possible de faire ce que je cherche à faire? y a-t-il uen syntaxe particulière?

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Il est bien possible d'affecter une macro à un bouton, un code exemple, pour affecter la Macro Calcul_On_Off du fichier Personal.xls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub AffecteMacro()
        ActiveSheet.Shapes("Button 1").OnAction = "PERSONAL.XLS!Calcul_On_Off"
    End Sub
    Par contre je suis surpris du nom de la macro que tu essaies d'associer:
    Citation Envoyé par miaousse Voir le message
    ...
    'eco-conception2 (version 31 08 2009) .xls'!HideAndReturn ("Eco-conception")
    'eco-conception2 (version 31 08 2009) .xls'!HideAndReturn "Eco-conception"
    ...
    Es tu certain de ceci, un nom de macro n'aime pas les espaces...

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    bonjour

    Ma question n'étais pas claire.
    HideAndReturn est bien ma procédure
    "Eco-conception" est un argument de cette procdédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub HideAndReturn(strWorkSheet As String)
        ActiveSheet.Visible = False
        Sheets(strWorkSheet).Select
    End Sub
    pour le moment je passe par des procédure intermédiaire ce qui ne me plais pas trop car je pense ce code est inutile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub HideAndReturn1()
        HideAndReturn "Eco-conception" 
    End Sub
    Public Sub HideAndReturn2()
        HideAndReturn "Apprendre" 
    End Sub

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Ca reste encore assez flou pour moi, je comprends pas vraiment le but final mais bon...
    Pour l'instant comment définis tu si c'est "Eco-conception" ou "Apprendre" ?
    Est-ce le nom de tes feuilles ? Il me semble que oui, et donc tu veux masquer la feuille active et en activer une autre, c'est bien ça ?
    N'as tu que ces deux feuilles ?
    En somme, réexplique moi ce que tu veux faire exactement et comment déclencher...
    A+

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Par défaut
    Citation Envoyé par miaousse
    pour le moment je passe par des procédure intermédiaire ce qui ne me plais pas trop car je pense ce code est inutile
    Non, ce n'est pas inutile car c'est la seule solution si tu veux mettre la valeur du paramètre en dur tel que tu le fais actuellement. Et je ne vois pas non plus en quoi ce n'est pas "plaisant". Ce qui serait déplaisant, ce serait de dupliquer le code de HideAndReturn dans chaque macro. Et encore, cette macro n'a pas beaucoup de code.

  6. #6
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    La procédure HideAndReturn admet bien un passage de paramètre. Il n'y ap as besoin de faire 2 procédures.



    Public Sub HideAndReturn(strWorkSheet As String)
    ' ActiveSheet.Visible = False ' Ca ne set à rien car la ligne suivante rend le worksheet non visible
    Sheets(strWorkSheet).Select
    End Sub

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Par défaut
    Citation Envoyé par CodeFacile
    ... Il n'y ap as besoin de faire 2 procédures.
    C'est vrai si on reste dans le VBA. Il reste certains points à éclaircir dans la question de miaousse:

    Citation Envoyé par miaousse
    ...Dans la boite de dialogue "affecter une macro"...
    Dans cette boîte de dialogue on ne peut mettre que des macros (Sub) sans paramètres.

    Citation Envoyé par miaousse
    Je cherche à affecter une macro qui aurait un ou des arguments au une forme automatique ou un contrôle sur une page
    Sur un bouton de commande ("Forms.CommandButton") sur une feuille de calcul, il suffit de double-cliquer dessus pour accéder à la procédure événenementielle CommandButton1_Click() qui est l'équivalent VBA de l'affectation de macro. Dans ce cas, il ne reste plus qu'à y écrire l'appel à la fonction HideAndReturn

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
      HideAndReturn "Eco-conception"
    End Sub
    Par contre, dans les boutons de barre d'outils, il n'existe que la boîte de dialogue "affecter une macro", auquel cas on est obligé d'écrire 2 macros Sub si on veut faire 2 boutons dans une barre d'outils.

Discussions similaires

  1. [Toutes versions] Affecter un bouton à une macro avec des paramètres
    Par nerixm dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/03/2011, 14h47
  2. [HELP] lancer une application avec argument
    Par thegorre dans le forum VBScript
    Réponses: 3
    Dernier message: 08/06/2007, 15h39
  3. passage d'une methode avec argument
    Par skanderb dans le forum JSF
    Réponses: 27
    Dernier message: 27/04/2007, 17h36
  4. [VBA-E] Affecter une macro a un autre classeur
    Par Mac Twist dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2007, 16h38
  5. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 08h04

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