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 :

transmettre un paramètre via OnAction (Control.Add)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Par défaut transmettre un paramètre via OnAction (Control.Add)
    Bonjour,
    connaissez vous le moyen de transmettre un paramètre dans une macro qui est appelée par la commande OnAction d'un bouton Application.CommandBars("toto").Controls.Add ?

    J'arrive bien à lancer un macro, mais si je veux transmettre un paramètre (qui correspond au nom ou tag du bouton), alors je coince...

    Voici le bout de code incriminé (la boucle créé une série de menus, qui doivent tous exécuter la macro laison, mais avec un paramètre différent à chaque fois) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Do
      With NouvSsMenu.Controls.Add(Type:=msoControlButton, ID:=702)
        .OnAction = "liaison """ & ActiveCell.Value & """'"
        .Caption = ActiveCell.Value
        .Tag =  ActiveCell.Value
      End With
      ActiveCell.Offset(1, 0).Activate
    Loop Until ActiveCell.Value = ""
    Voir message d'erreur. Est-ce que ce n'est pas tout betement un pb d'apostrophe ou truc similaire ?

    Merci pour votre aide.

    Nom : Capture.JPG
Affichages : 415
Taille : 19,5 Ko

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 5
    Par défaut
    Après quelques recherches je suis tombé sur cette synthaxe qui devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Do
      VariableString=ActiveCell.Value
      With NouvSsMenu.Controls.Add(Type:=msoControlButton, ID:=702)
        .OnAction = "'liaison ""VariableString""'"
        .Caption = ActiveCell.Value
        .Tag =  ActiveCell.Value
      End With
      ActiveCell.Offset(1, 0).Activate
    Loop Until ActiveCell.Value = ""

    La déclaration des menus se passe bien, sauf que la valeur de VariableString qui est réellement renvoyé dans la macro liaison est ..... VariableString. Et non pas une valeur qui est activecellvalue dépendant de la cellule courante dans la boucle...

    Help

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Si tu dois passer une variable string, ta méthode est correcte, mais tu dois y mettre la chaîne que tu as besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "'liaison ""MaChaine""'"
    Si c'est un paramètre numérique, il faut enlever les guillemets doubles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "'liaison 25'"
    Avec des variables, il fait les séparer avec des &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim MonNombre As Long
        Dim MaChaine As String
     
        MonNombre = 25
        MaChaine = "Allo"
        '.....
       .OnAction = "'Fonction1 """ & MaChaine & """'"
       .OnAction = "'Fonction2 " & MonNombre & "'"
        '.....

Discussions similaires

  1. [JSF et JSP] Transmettre des paramétre via <jsp:include
    Par Shivan dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/02/2006, 11h37
  2. Pb passage de paramétres via l'url
    Par chpog dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/09/2005, 10h34
  3. Passage de paramètres via l'URL
    Par carolinebelle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/08/2005, 16h16
  4. Transmettre une variable via un lien href
    Par developpeur_mehdi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/01/2005, 14h49
  5. [jsp]transmettre un paramètre
    Par antigone dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/08/2003, 15h47

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