VBA Word : activer ou désactiver un bouton dans un menu personnalisé [Résolu]

cs_GCFrance 7 Messages postés dimanche 4 mars 2012Date d'inscription 31 mars 2012 Dernière intervention - 30 mars 2012 à 15:42 - Dernière réponse : cs_GCFrance 7 Messages postés dimanche 4 mars 2012Date d'inscription 31 mars 2012 Dernière intervention
- 31 mars 2012 à 11:44
Bonjour à tous.

Dans un modèle de Word 2007, j'ai créé un menu composé de 2 boutons : jusque là, tout fonctionne très bien.

PROBLEME : en fonction du contexte, je veux pouvoir activer ou désactiver un des 2 boutons avec une ligne du genre
"xxx.Bouton1.Visible = False"
C'est le "xxx" qui me pose problème.
Quelqu'un peut-il m'aider ? Merci par avance.

Pour info , voici le code qui m'a permis de créer menu et boutons :
Set Ajout   = ActiveDocument.CommandBars.ActiveMenuBar _
.Controls.Add(Type:=msoControlPopup, Temporary:=True)
Set MenuModif = Ajout.Add(Type:=msoControlPopup, Temporary:=True)
MenuModif.Caption = "Modification"
Set Bouton1 = MenuModif.Controls.Add(Type:=msoControlButton, ID:=1)
 	Bouton1.Caption = "Déformatage"
Bouton1.OnAction = "Deform"
Set Bouton2 = MenuModif.Controls.Add(Type:=msoControlButton, ID:=2)
Bouton2.Caption = "Reformatage"
Bouton2.OnAction = "Reform"
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_GCFrance 7 Messages postés dimanche 4 mars 2012Date d'inscription 31 mars 2012 Dernière intervention - 31 mars 2012 à 11:44
3
Merci
Trop facile - j'avais déjà essayé - mais j'ai un message "Objet absent".

J'ai donc réglé le problème différemment et, cette fois, tout fonctionne :
- en fait, je recrée mon menu "Modification" et ses boutons à chaque ouverture du document
- je le supprime à chaque fermeture
- le fait de le recréer me permet de conserver mes objets durant tout le temps que le doc est ouvert.

Bref, cela donne le code suivant :
' Dans le module du document :
  Public MenuModif ' Objet menu
  Public Bouton1 ' Objet 1er bouton
  Public Bouton2 'Objet 2ème bouton
  '
  Public Sub AutoOpen()
    Set Ajout = ActiveDocument.CommandBars.ActiveMenuBar _
.Controls.Add(Type:=msoControlPopup, Temporary:=True)
    Set MenuModif = Ajout.Add(Type:=msoControlPopup, Temporary:=True)
MenuModif.Caption = "Modification"
    Set Bouton1 = MenuModif.Controls _
        .Add(Type:=msoControlButton, ID:=1)
 	Bouton1.Caption = "Déformatage"
Bouton1.OnAction = "Deform"
Bouton1.Enabled = False
    Set Bouton2 = MenuModif.Controls _
        .Add(Type:=msoControlButton, ID:=2)
Bouton2.Caption = "Reformatage"
Bouton2.OnAction = "Reform"
Bouton2.Enabled = False
  End Sub
  '
  Public Sub AutoClose()
    Bouton1.Delete
    Bouton2.Delete
    MenuModif.Delete
  End Sub
  '
  Sub MaProc
    Bouton1.Enabled = True ' Ça marche avec les boutons
    MenuModif.Enabled = False ' Ça marche aussi avec le menu
  End Sub

De la discussion jaillit la lumière...
Merci beaucoup pour ton aide, Le Pivert.

Merci cs_GCFrance 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de cs_GCFrance
cs_GCFrance 7 Messages postés dimanche 4 mars 2012Date d'inscription 31 mars 2012 Dernière intervention - 30 mars 2012 à 15:45
0
Merci
PS : dans Word 2007, mon menu s'est automatiquement placé dans l'onglet "Compléments" du ruban
Commenter la réponse de cs_GCFrance
Utilisateur anonyme - 31 mars 2012 à 02:55
0
Merci
Bonjour,

Apparemment tes xxx ne servent à rien. Juste à mettre les lignes

bouton1.visible = false


ou

bouton2.visible = false


Ou bien la question posée n'est pas la vraie question.

PS. Ne pas confondre VBA et VBScript. C'est VBA (VisualBasic édition Applications qui vient avec Office.
Commenter la réponse de Utilisateur anonyme
cs_GCFrance 7 Messages postés dimanche 4 mars 2012Date d'inscription 31 mars 2012 Dernière intervention - 31 mars 2012 à 09:06
0
Merci
Pas facile à expliquer :
- la procédure décrite plus haut n'est pas exécutée à chaque ouverture du document mais elle l'a été une seule fois pour créer menu et boutons ; depuis, menu et boutons existent et je ne la relance pas.
- donc, si j'envoie un "Bouton1.Visible True" ou un "Reformatage.Visible True", j'obtiens le message d'erreur "424 - Objet requis" car, bien sûr, ces noms d'objets n'existent pas.

Ma difficulté, dès lors, consiste à retrouver le chemin exact qui me permettra de modifier les propriétés de ces boutons (d'où l'impérieuse nécessité du "xxx").

Avant d'envoyer un "Bouton1.Visible = False", je dois déclarer un
"Set Bouton1 = Menubars?????????"

Tout ce que j'ai essayé n'a pas fonctionné jusqu'à présent.
Commenter la réponse de cs_GCFrance
cs_Le Pivert 5439 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 31 mars 2012 à 09:28
0
Merci
Bonjour,
Essaie ceci:

Application.CommandBars("Modification").Controls("Déformatage").Visible = False
Application.CommandBars("Modification").Controls("Reform").Visible = False


@+Le Pivert
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.