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 :

passage d arguments a une procedure lancer par un menu xl


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut passage d arguments a une procedure lancer par un menu xl
    bonjour,

    j ai créer un menu personnalisé dans une feuille xl avec plusieurs boutons.


    pour optimiser mon code je voudrais lancer une procedure en lui fournissant un argument.

    quand je fournis un argument a la procedure "proc_essais" celle ci n est pas trouvé lors de la compilation
    message d erreur = impossible de trouver la macro proc_essais(t)

    cette procedure fonctionne bien lorsque je ne lui met aucun argument



    code simplifié
    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
    20
    21
    22
    23
    24
    25
    26
     
    Sub proc_essais(t)
    MsgBox t
    End Sub
     
    Sub ajout_bar_ESSAIS()
    Dim menu As CommandBarButton
    Dim choixmenu
    Dim t
     
     
    Application.CommandBars.Add "nouveau menu", 1, 0, True
     
    Set menu = CommandBars("nouveau menu").Controls.Add(Type:=msoControlButton)
        With menu
            .Caption = "MENU toto"
            .Style = msoButtonCaption
            .OnAction = "proc_essais"
        End With
     
    Application.CommandBars("nouveau menu").Visible = True
    End Sub
     
    Sub effacfe()
    Application.CommandBars("nouveau menu").Delete
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    et d'apres le code que tu fournis, je ne vois pas comment tu fais pour lui fournir un argument

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    en effet
    ce code n est pas le "vrais" code
    c un exemple simple

    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
    20
    21
    22
    23
    24
    25
    Sub proc_essais(t)
    MsgBox t
    End Sub
     
    Sub ajout_bar_ESSAIS()
    Dim menu As CommandBarButton
    Dim choixmenu
    Dim t
     t = " ce que tu veux"
     
    Application.CommandBars.Add "nouveau menu", 1, 0, True
     
    Set menu = CommandBars("nouveau menu").Controls.Add(Type:=msoControlButton)
        With menu
            .Caption = "MENU toto"
            .Style = msoButtonCaption
            .OnAction = "proc_essais(t)"
        End With
     
    Application.CommandBars("nouveau menu").Visible = True
    End Sub
     
    Sub effacfe()
    Application.CommandBars("nouveau menu").Delete
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Où prends-tu "t" ? C'est une sélection, une valeur ? Comment l'obtiens-tu ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir ouskel'n'or

    dans l exemple donnée t est un variant et t est affecté d une donnée de type string dès la creation du bouton de commande

    si je remplace la procedure

    [CODE]Sub proc_essais(t) et onaction = "proc_essais(t)"
    [CODE]
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sub proc_essais()    et  onaction = "proc_essais"
    l appel de la procedure est realisé normalement par contre je n arrive pas a appele une procedure avec un argument !!!!
    j espere avoir ete assez claire

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu ne dis pas comment est renseigné t
    Voici toujours la manière d'envoyer un paramètre à une macro
    http://www.developpez.net/forums/sho...ro+param%E8tre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage d'objet en argument d'une procedure
    Par richton95 dans le forum Général VBA
    Réponses: 2
    Dernier message: 15/07/2010, 17h17
  2. passage d'argument dans une fonction
    Par wadcyr8_197 dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2007, 09h41
  3. PB de passage d'argument dasn une classe
    Par Naelhem dans le forum C++
    Réponses: 13
    Dernier message: 26/10/2006, 20h03
  4. [VB.NET] passage d'arguments d'une classe(form1) à une autre
    Par zouhib dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2006, 16h54

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