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 affectée à un menu contextuel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Par défaut Macro affectée à un menu contextuel
    Bonjour,

    je crée un menu contextuel quand je fais un clic droit sur une cellule, et ce menu comporte des boutons qui déclenchent des procédures ... seulement le pb c'est qu'il les déclenche toujours 2 fois.


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
    Cancel = True
     
    '...
     
    ' Création du menu contextuel
    On Error Resume Next
    Application.CommandBars("PlanningBarre").Delete
    If Err.Number <> 0 Then
        Err.Clear
    End If
    On Error GoTo 0
     
    Dim CommandBarPlanning As CommandBar
    Dim NouveauBouton As CommandBarControl
    Dim NouveauBouton2 As CommandBarControl
     
    Set CommandBarPlanning = Application.CommandBars.Add("PlanningBarre", msoBarPopup, , True)
     
    'Remplacements
     
    Dim Plage As Range
    Dim Cell As Range
    ' Init de variable qui génère une erreur si la plage n'existe pas
    On Error Resume Next
    Set Plage = Worksheets("ListeDispo").Range("ListeDispo")
     
    If Err.Number = 1004 Then
        Err.Clear
        Set NouveauBouton = CommandBarPlanning.Controls.Add
        NouveauBouton.Caption = "Pas de remplaçant"
    Else
        For Each Cell In Worksheets("ListeDispo").Range("ListeDispo")
            Set NouveauBouton = CommandBarPlanning.Controls.Add
            NouveauBouton.Caption = Cell.Text
            NouveauBouton.OnAction = "FeuillePlanning.Remplacer(""" & Cell.Text & """)"
        Next Cell
    End If
    On Error GoTo 0
     
    CommandBarPlanning.ShowPopup
     
    Exit Sub
    Dans code précédent c'est la ligne NouveauBouton.OnAction = "FeuillePlanning.Remplacer(""" & Cell.Text & """)" qui affecte au control une macro qui s'appelle par exemple FeuillePlanning.Remplacer("Dupont").
    ListeDispo est une plage nommée qui contient des noms ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Remplacer(NomRemplacant As String)
     
    Debug.Print NomRemplacant
     
    End Sub
    Le problème c'est que cette macro s’exécute 2 fois, alors que si j'ai une syntaxe de type NouveauBouton.OnAction = "FeuillePlanning.RemplacerDupond" c'est a dire avec une procédure sans paramètre, celle ci n'est exécutée qu'une seule fois.

    Auriez vous une idée du pourquoi comment ??? MERCI

  2. #2
    Membre éprouvé
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouveauBouton.OnAction = "'FeuillePlanning.Remplacer """ & Cell.Text & """'"
    Et voilà : pas de parenthèses pour l'appel de procédure.

    J'ai donc le comment sans le pourquoi ... mais ça marche.

    Merci moi

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut macro affectée à un menu
    bonjour,

    je ne sais ci cela (usage des parenthèses) pourra t'aider à comprendre le pourquoi !

    http://mhubiche.developpez.com/vba/f...yntaxes/bases/

    pour ma part, ce n'est pas encore clair.

    cordialement,

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    en effet c'est assez difficile de mètre des argument dans l'appel de la macro associée dans un item d'un menu perso
    cela dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NouveauBouton.Caption = Cell.Text
            NouveauBouton.OnAction = "FeuillePlanning.Remplacer(""" & Cell.Text & """)"
    j'avoue que pour moi il n'est pas utille de mettre le nom dans la macro
    regarde du cote de la propriété tag du bouton
    et de commandbar.action.control.tag

    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éprouvé
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Par défaut
    Merci de vos réponses ...

    Pour l'usage du tag, euh ... il faut un module de classe basé sur CommandBarControl et définir l’événement click dans lequel j'aurai programmé ma lecture du tag ? c'est ça ??

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

Discussions similaires

  1. [XL-2003] Message d'erreur lors de l'exécution d'une macro. depuis un menu contextuel
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2015, 16h44
  2. [AC-2007] Suppression d'un menu contextuel créé par macro
    Par spaiku dans le forum IHM
    Réponses: 2
    Dernier message: 10/11/2010, 10h29
  3. affectation d'une macro dans un menu
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 31/08/2008, 16h41
  4. Menu contextuel et macro Complémentaire
    Par Balbo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/07/2008, 14h31
  5. Exécuter une macro depuis le menu contextuel du clic droit?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2008, 19h12

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