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 :

"Impossible d'exécuter la macro -- Il est possible qu'elle ne soit pas disponible .." - Menu contextuel Cell


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut "Impossible d'exécuter la macro -- Il est possible qu'elle ne soit pas disponible .." - Menu contextuel Cell
    Bonjour à toutes et à tous,

    Suite à cette discussion grâce à laquelle j'ai, je pense, compris comment ajouter un contrôle déclenchant une macro dans un menu contextuel, j'ai malgré tout ce message d'erreur qui apparaît après redémarrage de l'ordinateur:

    Impossible d'exécuter la macro ''C:\Chemin\PERSONAL.xlsb'!DateDoc'. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées.

    Voici les codes que j'utilise pour ajouter le contrôle:
    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
    Option Base 1
     
    Private mccd(2) As CommandBar   'menu contextuel clic-droit
    Private ctrl As Variant         'contrôle d'un menu contextuel
    Private i As Byte
     
    Sub AjouteContrôleDateDoc()
     
            Set mccd(1) = Application.CommandBars("Cell")
            Set mccd(2) = Application.CommandBars("Query")
     
            EffaceContrôle
     
    For i = 1 To 2
        With mccd(i).Controls _
            .add(msoControlButton, , , 6)
            .Caption = "Date du jour"
            .OnAction = "MenusContextuels.DateDoc"
            .Tag = "ContrôlePerso"
        End With
            mccd(i).Controls(6).BeginGroup = True
    Next
     
    End Sub
     
    Sub EffaceContrôle()
     
            Set mccd(1) = Application.CommandBars("Cell")
            Set mccd(2) = Application.CommandBars("Query")
     
    For i = 1 To 2
        For Each ctrl In mccd(i).Controls
            If ctrl.Tag = "ContrôlePerso" Then ctrl.Delete
        Next ctrl
    Next
     
    End Sub
    Précision, en lançant ce code après le message d'erreur, "Date du jour" et l'emplacement de la macro apparaissent bien dans la fenêtre d'exécution (Ctrl+G).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub InfoMenus()
     
            Set mccd(1) = Application.CommandBars("Cell")
            Set mccd(2) = Application.CommandBars("Query")
     
    For i = 1 To 2
        For Each ctrl In mccd(i).Controls
            If ctrl.Tag = "ContrôlePerso" Then Debug.Print ctrl.Caption & Chr(9) & ctrl.OnAction
        Next ctrl
    Next
     
    End Sub
    Quelqu'un ou quelqu'une aurait-il ou elle une idée d'où le problème vient?

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut Ceinture et bretelles
    Bonjour,

    Je ne sais pas si ma réponse pourra vous aider mais pour mes macros complémentaires, je vérifie la présence de mes macros, à la fois dans les événements Workbook_Open et Workbook_beforeclose dans ThisWorkbook, et je les supprime le cas échéant. Je me suis aperçu que mes mises à jour n'étaient pas toujours prises en compte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     ' Suppression de la commande existante (au cas où...)
     For Each NouvelleCommande In Application.CommandBars(1).Controls
         If NouvelleCommande.Caption = "XXXXX" Then
            Application.CommandBars(1).Controls("XXXXX").Delete
            Exit For
         End If
     Next NouvelleCommande
    Workbook_Open lance ensuite la macro créant les menus et sous menus (contrôles) qui se trouve dans un module standard.

    Pour info : Pour vérifier que j'ai bien chargé la bonne version de la macro, j'utilise aussi la propriété TooltipText. Le texte s'affiche en passant le pointeur de la souris sur le contrôle. C'est utile aussi pour y mettre le numéro de téléphone du dépanneur....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        '---------------------
        ' Création du contrôle
        '---------------------
        Set NouveauMenu = CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=IndexAide, Temporary:=True)
     
        ' Ajout du texte
        NouveauMenu.Caption = "XXXXX"
        NouveauMenu.TooltipText = "Version du 20-12-2016...."
    Sinon, tous mes noms de Sub, Function, variables n'ont jamais de caractères signés comme le ô de contrôle dans le nom de vos procédures.

    Cordialement.

Discussions similaires

  1. [XL-2010] Pivot Chart, modifier le data table par macro, c'est possible?
    Par halaster08 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/11/2016, 15h41
  2. [XL-2007] Impossible d'exécuter mes macros après ouverture du fichier (fichier .xlsm)
    Par davtypo3 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/02/2015, 16h29
  3. [XL-2010] Backstage - Impossible d'exécuter la macro
    Par forestlaw2 dans le forum Excel
    Réponses: 5
    Dernier message: 27/08/2013, 12h01
  4. Impossible d'exécuter la macro
    Par RaoulPierre dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/05/2012, 16h32
  5. ctrl-z apres une macro c'est possible ?
    Par gronaze dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2008, 19h03

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