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 :

Identification de la figure qui appelle la procédure d'un menu contextuel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut Identification de la figure qui appelle la procédure d'un menu contextuel
    Bonjour,

    j'ai créé un menu contextuel (clic droit de souris) pour me permettre de multiplier les actions possibles sur des figures geométiques.

    Cependant, autant j'arrive à créer et faire lancer la macro lié au menu contextuel, autant je n'arrive pas à identifier la figure sur laquelle j'ai faitr le clic droit.
    Ca doit être bete comme chou mais je rame...

    MErci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut
    Bonjour SilkyRoad,

    malheureusement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    figure_ref = application.caller
    ne marche pas dans ce cas là car je n'appele pas la macro par un click gauche, mais par le menu contextuel du click droit.

    L'astuce à laquelle je pensais est d'identifier la figure de la page sélectionnée. Mais le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if fig.select = true then figure_ref = fig.name
    ne marche pas non plus...

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Je ne comprend pas ce que manipulations que tu effectues.
    A quoi correspondent fig et figure_ref ?

    Peux tu être plus précis :
    Comment réalises tu ton menu contextuel ? Comment le gères tu ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut
    Je crée un menu contextuel à l'ouverture du fichier par la fonction que j'appelle alors:

    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
     
    Private Sub Workbook_Open()
           MenuCell "ModifTexteFIG", "Modification des données de la figure"
    End Sub
     
    Function MenuCell(stCde As String, stMess As String)
        Dim mc As CommandBarControls
        Dim bo As CommandBarButton   
        If CommandBars("Shapes").Controls(1).Caption <> stMess Then
        stCdefin = stCde & "Fig"
        Testa = CommandBars("Shapes").Controls(1).Caption
            Set mc = CommandBars("Shapes").Controls
            Set bo = mc.Add(msoControlButton, Temporary:=True, Before:=
            bo.Caption = stMess
            bo.OnAction = stCdefin
        End If
     
    End Function
    Ensuite je fais un travail graphique qui a des répercussions sur des données casé dans des tableaux. Donc j'utilise différentes macro qui interdit les modif de texte, de forme, etc, sans debloquer la feuille par exemple.
    Ceci pour provoquer le reflexion de faire un click droit sur la figure, pour choisir dans le menu contextuel l'option voulue. Ici : Modification du texte, par exemple. (Le choix de cette option appelle donc la procédure ModifTexteFIG)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub ModifTexteFIG()
    MsgBox Application.Caller     '-----> BUGG
     
        For Each fig In ActiveSheet.Shapes
             If fig.Select = true Then  '---> ne marche pas non plus car le programme sélectionne automatiquement la figure qu'il interroge, sans meme bugguer....
                texte_initiale = fig.TextFrame.Characters.Text
                Exit Sub
            End If
    end sub
    Y vois tu plus clair Michel ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2015, 12h47
  2. Connaître le code qui appelle une procédure
    Par The Jos dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2010, 12h08
  3. [Delphi 7] Lien web qui appelle une procédure
    Par Kropernic dans le forum Web & réseau
    Réponses: 9
    Dernier message: 16/11/2007, 10h17
  4. Réponses: 2
    Dernier message: 21/04/2006, 15h32
  5. [PL/SQL] Trigger qui appelle une procédure
    Par alex6891 dans le forum Oracle
    Réponses: 5
    Dernier message: 19/01/2006, 10h01

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