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

VBA Discussion :

Macro Word laborieuse


Sujet :

VBA

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2020
    Messages : 88
    Points : 30
    Points
    30
    Par défaut Macro Word laborieuse
    Bonjour,

    J'utilise souvent VBA avec Excel, mais j'ai très peu d'expérience avec VBA et Word. Je cherche à créer dans Word un menu contextuel personnalisé, avec menus et sous-menus, qui, avec le clic droit, supprimerait le menu contextuel standard pour le remplacer par mon menu contextuel personnalisé.

    Après beaucoup de recherches, j'ai fini par trouver une macro qui fait à peu près ce que je cherche. Je la poste ci-dessous.

    Mais je n'arrive pas à améliorer certains points comme je l'aimerais, à savoir:

    1) J'aimerais pouvoir insérer un trait de séparation dans mon menu, entre Option 3 et Attention. J'ai essayé avec l'instruction msoControlSeparator, mais cela n'a pas fonctionné
    2) J'ai des difficultés à trouver une macro qui supprime ce menu personnalisé et recrée le menu contextuel original. Par exemple, si je lance mon fichier .docm contenant les macros, je veux qu'il m'affiche le menu contextuel personnalisé. Mais si j'ai un autre fichier ouvert, en .docx, j'aimerais le menu contextuel standard. Je sais à peu près faire ça dans Excel, mais avec Word, c'est compliqué!

    Merci pour toutes les pistes ou bouts de code que vous pourrez me suggérer!



    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Sub BuildControls()
        Dim oPopUp As CommandBarPopup
        Dim oCtr As CommandBarControl
        Dim oSubMenu As CommandBarPopup
     
        ' Supprimer tous les contrôles du menu contextuel standard
        On Error Resume Next
        For Each oCtr In CommandBars("Text").Controls
            oCtr.Delete
        Next oCtr
        On Error GoTo 0
     
        ' Ajouter le menu personnalisé en haut du menu Text
        Set oPopUp = CommandBars("Text").Controls.Add(msoControlPopup, , , 1)
        With oPopUp
            .Caption = "My Very Own Menu"
            .Tag = "custPopup"
            .BeginGroup = True
        End With
     
        ' Ajouter les macros personnalisées au menu personnalisé
        With oPopUp.Controls.Add(msoControlButton)
            .Caption = "Option 1"
            .OnAction = "InsererTexteOption1"
        End With
     
        ' Ajouter l'option 2 avec un sous-menu contenant deux macros
        Set oSubMenu = oPopUp.Controls.Add(msoControlPopup)
        With oSubMenu
            .Caption = "Option 2"
     
            ' Ajouter la première macro du sous-menu
            With .Controls.Add(msoControlButton)
                .Caption = "Macro 1"
                .OnAction = "MacroOption2_1"
            End With
     
            ' Ajouter la deuxième macro du sous-menu
            With .Controls.Add(msoControlButton)
                .Caption = "Macro 2"
                .OnAction = "MacroOption2_2"
            End With
        End With
     
        With oPopUp.Controls.Add(msoControlButton)
            .Caption = "Option 3"
            .OnAction = "InsererTexteOption3"
        End With
     
        ' Ajouter les macros Attention, Vigilance et Coopération
        With oPopUp.Controls.Add(msoControlButton)
            .Caption = "Attention"
            .OnAction = "AttentionMacro"
        End With
     
        With oPopUp.Controls.Add(msoControlButton)
            .Caption = "Vigilance"
            .OnAction = "VigilanceMacro"
        End With
     
        With oPopUp.Controls.Add(msoControlButton)
            .Caption = "Coopération"
            .OnAction = "CooperationMacro"
        End With
     
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 227
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 227
    Points : 1 802
    Points
    1 802
    Par défaut
    Salut,

    Il n'est pas très avisé de remplacer les manu contextuels existant, ca pose des problèmes, notamment comme tu l'a expérimenté: La restauration des menu originels.
    Contentes toi d'ajouter un nouveau menu à l'ouverture du document,
    l'afficher sur détection du click droit.
    le supprimer à la fermeture du document.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2020
    Messages : 88
    Points : 30
    Points
    30
    Par défaut
    Salut Deedolith,

    Merci pour ton message, qui incite à un optimisme... relatif. Entretemps, j'ai poursuivi mes essais.
    J'arrive à présent à créer le menu contextuel personnalisé (la macro que j'ai postée), mais également à le supprimer à la fermeture du fichier. Ce qui fait que si j'ouvre ensuite un fichier Word qui n'a pas besoin de ces fonctionnalités, le menu contextuel proposé est le menu contextuel standard.

    Limitations: je dois fermer le premier fichier avant d'ouvrir le second, car les macros qui créent et suppriment le menu contextuel personnalisé sont associées aux événements Open et Close. Je n'ai pas trouvé, comme dans Excel, d'événement Deactivate (ce sont peut-être mes limitations avec Word, car il y a des événements dont je ne comprends pas bien le sens).

    Autre limitation: j'ai renoncé à la mise en place d'un trait de séparation (que j'arrive facilement à faire dans Excel). Elle n'est pas essentielle au fonctionnement du fichier.

    En conclusion, mon menu contextuel personnalisé permet de créer des menus et sous-menus dans un fichier Word... et je m'en tiendrai à ça! Pour mon état de connaissances, Word est tout de même beaucoup moins intuitif qu'Excel. Mais si un lecteur a des compétences en la matière, je reste à l'écoute!

    Merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2020
    Messages : 88
    Points : 30
    Points
    30
    Par défaut
    Pour les éventuels intéressés, voici le lien du site où j'ai trouvé la macro: https://gregmaxey.com/word_tip_pages...tcut_menu.html

Discussions similaires

  1. Macro word pour récupérer le numéro d'un titre
    Par casolaro dans le forum VBA Word
    Réponses: 2
    Dernier message: 30/11/2005, 07h57
  2. Macro Word Ouffff
    Par Annie dans le forum VBA Word
    Réponses: 9
    Dernier message: 12/11/2005, 23h01
  3. macros word et lecture dans un fichier excel
    Par antrax2013 dans le forum Windows
    Réponses: 2
    Dernier message: 01/10/2005, 19h05
  4. date macro word 2000
    Par cmgirondins dans le forum VBA Word
    Réponses: 14
    Dernier message: 07/09/2005, 11h09
  5. [MACRO][WORD] lancer macro word
    Par jcarre dans le forum Documents
    Réponses: 3
    Dernier message: 02/12/2004, 09h01

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