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 :

Ajout commande dans le 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 éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    840
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 840
    Par défaut Ajout commande dans le menu contextuel
    Bonjour.

    J'ai besoin de votre aide s'il vous plait.

    Je voudrais lancer une macro avec un Menu contextuel - clique droit de la souris.

    Mais j'ai le message suivant qui s'affiche :
    Impossible d'exécuter la macro "……'.Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées.

    J'ai vérifié dans les options =>Centre de Gestion de la confidentialité=>Paramètres du Centre de Gestion de la confidentialité=>Paramètres des macros=>L'option Activer toutes les macros est activé.

    Pourquoi ça ne fonctionne pas ?

    Merci d'avance pour vos réponses

  2. #2
    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 re
    re
    bonjour modus
    c'est toujours pareil il faut te tirer les vers du nez a chaque fois on est pas devain ,sans voir de code on avancera pas
    poste ton code de ta commandbars ou commandbars modifiée et apres on verra
    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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    840
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 840
    Par défaut
    Bonjour patricktoulon

    Je suis navré de ne pas avoir joint le code, le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Application.Intersect(Target, Range("A34:A54")) Is Nothing Then
                With Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=6, temporary:=True)
                   .Caption = "AJOUT LISTE LIBELLÉ"
                   .OnAction = "Mod_AjoutListeLibelle"
                End With
        End If
    End Sub
    Ceux-ci dit, j'ai retrouvé un vieux classeur qui fonctionne en utilisant exactement cette procédure ?

  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 re
    re
    la procedure tu l'a mise ou dans un module ou dans la feuille telle est la question n'est ce pas
    d'autant plus que a quelmoment tu la show cette popup puisque normalement quand tu le fait dans le change le popup d'origine ne s'affiche pas hein???

    bon un petit exemple comme ca vite fait avec le clic droit sur les cells

    j'attire ton attention sur le cancel et show popup
    j'attire ton attention aussi comment est codé le ".onction"

    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
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        Cancel = True 'on annule l'affichage du menu cell
        'on ajoute l'item au menu cell
        With CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=6, temporary:=True)
            .Caption = "AJOUT LISTE LIBELLÉ"
              .OnAction = "'Feuil1.Mod_AjoutListeLibelle " & Chr(34) & Target.Address & Chr(34) & "'" 'on appelle la macro qui est dans le module de la feuille elle meme et on lui script l'argument de l'adress de la target
        'donc l'item appelera la sub AVEC!!!!  argument
        End With
        CommandBars("cell").ShowPopup 'comme on l'a annuler il faut l'affifficher (showpopup)
     
        'quand tu aura selectionner ou pas et que le popup se sera fermer la commandbars("cell") revient a l'origine
        ' ainsi  quand tu fermera ton classeur et ouvrira un autre la barre cell sera d'origine
        CommandBars("cell").Reset
    End Sub
     
    Sub Mod_AjoutListeLibelle(adresse)
        MsgBox cel
        With Range(adresse)
        ' ce que tu veux ici
        End With
        MsgBox adresse
     
     
    End Sub
    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 éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    840
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 840
    Par défaut
    oups!, j'ai oublié de le préciser.

    Je l'ai mise dans la feuille, voici la procédure définitive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        For Each icbc In Application.CommandBars("cell").Controls
            If icbc.Tag = "brcom" Then icbc.Delete
        Next icbc
     
        If Not Application.Intersect(Target, Range("A34:A54")) Is Nothing Then
                With Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=6, temporary:=True)
                   .Caption = "AJOUT LISTE LIBELLÉ"
                   .OnAction = "Mod_AjoutListeLibelle"
                   .Tag = "brcom"
                End With
        End If
    End Sub

  6. #6
    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 re
    re
    on s'est croisé regarde mon post précédent

    et pour que ca corresponde a ce que tu voulais c'est a dire avec la condition A34:A54

    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
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        If Not Application.Intersect(Target, Range("A34:A54")) Is Nothing Then
            Cancel = True    'on annule l'affichage du menu cell
            'on ajoute l'item au menu cell
            With CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=6, temporary:=True)
                .Caption = "AJOUT LISTE LIBELLÉ"
                .OnAction = "'Feuil1.Mod_AjoutListeLibelle " & Chr(34) & Target.Address & Chr(34) & "'"    'on appelle la macro qui est dans le module de la feuille elle meme et on lui script l'argument de l'adress de la target
                'donc l'item appelera la sub AVEC!!!!  argument
            End With
            CommandBars("cell").ShowPopup    'comme on l'a annuler il faut l'affifficher (showpopup)
        End If
        'quand tu aura selectionner ou pas et que le popup se sera fermer la commandbars("cell") revient a l'origine
        ' ainsi  quand tu fermera ton classeur et ouvrira un autre la barre cell sera d'origine
        CommandBars("cell").Reset
    End Sub
     
    Sub Mod_AjoutListeLibelle(adresse)
        With Range(adresse)
            ' ce que tu veux ici
        End With
        MsgBox adresse
     
    End Sub

    ET TU PEUX meme mettre ta liste de liblés dans le popup
    demo en feuille2
    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
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        If Not Application.Intersect(Target, Range("A34:A54")) Is Nothing Then
            Cancel = True    'on annule l'affichage du menu cell
            'on ajoute l'item au menu cell
            With CommandBars("cell")
                Set pop = .Controls.Add(Type:=msoControlPopup, before:=6, temporary:=True)
                pop.Caption = "LISTE DE LIBELE"
                arrlibel = Array("toto", "titi", "riri", "fifi", "loulou")
                For i = LBound(arrlibel) To UBound(arrlibel)
                    Set bout = pop.Controls.Add(Type:=msoControlButton, temporary:=True)
                    bout.Caption = arrlibel(i)
                    bout.OnAction = "'Feuil2.Mod_AjoutListeLibelle " & Chr(34) & arrlibel(i) & """,""" & Target.Address & Chr(34) & "'"     'on appelle la macro qui est dans le module de la feuille elle meme et on lui script l'argument de l'adress de la target
                Next
                'donc l'item appelera la sub AVEC!!!!  argument
            End With
            CommandBars("cell").ShowPopup    'comme on l'a annuler il faut l'affifficher (showpopup)
        End If
        'quand tu aura selectionner ou pas et que le popup se sera fermer la commandbars("cell") revient a l'origine
        ' ainsi  quand tu fermera ton classeur et ouvrira un autre la barre cell sera d'origine
        CommandBars("cell").Reset
    End Sub
     
    Sub Mod_AjoutListeLibelle(libel, adresse)
        With Range(adresse)
            ' ce que tu veux ici
        End With
        MsgBox "libélé : " & libel & "  dans " & adresse
     
    End Sub
    demo
    Nom : demo2.gif
Affichages : 310
Taille : 585,8 Ko
    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

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

Discussions similaires

  1. [XL-2013] Ajout commande dans le menu contextuel non réalisée
    Par pierreduboa dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/05/2018, 11h49
  2. Réponses: 3
    Dernier message: 19/04/2017, 17h36
  3. Ajouter une commande dans le menu contextuel
    Par Tenguryu dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/04/2006, 12h43
  4. Réponses: 15
    Dernier message: 12/08/2005, 15h06
  5. Visibilité commande dans un Menu contextuel
    Par Hamdi dans le forum IHM
    Réponses: 3
    Dernier message: 20/01/2005, 12h29

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