Enable / Disable un menu personalisé

Résolu
cs_Tireur Messages postés 24 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 28 décembre 2008 - 12 nov. 2008 à 19:54
DidierLoche Messages postés 33 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 25 novembre 2008 - 19 nov. 2008 à 22:16
Bonjour tout le monde.  Je m'en remet encore une fois à vous tous... : Je suis en train de créer un formulaire.  Ce formulaire sera placé sur un réseau.  J'ai placé dans le formulaire un menu personalisé dans la "commandbar" standard (groupe des menus Fichiers, Edition, etc...).  Le menu que j'ai cré en mode "ersonalier..." du menu Octions spéciales (Fon&ctions spéciales).  J'ai placé des macros la dedans.  Dans mon formulaire, lorqu'il ouvre, j'ai placé une fonction (module) qui récupère le nom de l'ordinateur et si ce n'est pas "EDH827", je veux que mon menu personalisé soit non disponible.  Comment je fais??? J'ai tenté plusieurs syntaxes de la ligne en rouge ci-bas sans résultat. 

Language :  VBA
Application : Mocrosoft Word 2002 (v10).  Je ne peux pas changer c'est celui de mon employeur.

Fonction de récupération du nom de l'ordinateur appelé à l'ouverture du formulaire :
' ----------------- DÉBUT DU CODE -------------------------------------------------------------------------------

Private Declare Function GetComputerNameA Lib "kernel32" _
(ByVal lpBuffer As String, nSize As Long) As Long



Public Function CurrentMachineName() As String




    '  Déclaration des variables.
    Dim lSize As Long
    Dim sBuffer As String
   
    '  Assignation des valeurs aux variables.
    sBuffer = Space$(16)
    lSize = Len(sBuffer)
   
    '  Récupération de l'identité de l'ordinateur.
    If GetComputerNameA(sBuffer, lSize) Then
          CurrentMachineName = Left$(sBuffer, lSize)
    End If
   
    '  Vérification de l'identité de l'ordinateur du bureau des CU se service.
    If CurrentMachineName = "EHD827" Then
        GoTo Line1:
    Else
        '  SYNTAXE PAS BONNE : Application.CommandBars("standard").Controls("Fonctions Spéciales").Enabled = False
    End If




Line1:




End Function
' -------------------------- FIN DU CODE -------------------------------------------------------------------------

Merci de votre temps.

Yann Lapointe

8 réponses

DidierLoche Messages postés 33 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 25 novembre 2008 1
18 nov. 2008 à 21:11
Bonsoir,
Sous VBA, tu peux ajouter et supprimer des menus. Voir exemple ci-dessous.
Tu peux ainsi créer le menu que tu veux pour certains utilisateurs et le supprimer pour d'autres.

Sub Ajout_barre()
Set myMenuBar = CommandBars.ActiveMenuBar
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, _
    Temporary:=True)
newMenu.Caption = "Fonctions spéciales"
Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton, ID:=1)
With ctrl1
    .Caption = "Import"
    .TooltipText = "Import"
    .Style = msoButtonCaption
    .OnAction = "toto"
End With
Set ctrl2 = newMenu.Controls.Add(Type:=msoControlButton, ID:=1)
With ctrl2
    .Caption = "Export"
    .TooltipText = "Export"
    .Style = msoButtonCaption
    .OnAction = "titi"
End With
End Sub



Sub toto()
MsgBox "Toto !!!"
End Sub



Sub titi()
MsgBox "Titi !!!"
End Sub



Sub delete_Commandbar()
CommandBars.ActiveMenuBar.Controls("Fonctions spéciales").Delete
End Sub


Cela devrait répondre à ta question !


Bonne soirée,
Didier
3
DidierLoche Messages postés 33 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 25 novembre 2008 1
12 nov. 2008 à 21:43
Bonjour,

As-tu essayé Application.CommandBars("standard").Visible = False?
Autre chose, écris le test comme ceci, ça fait plus propre !

   If CurrentMachineName <> "EHD827" Then
       
Application.CommandBars("standard").Visible = False
   End If

Didier
0
cs_Tireur Messages postés 24 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 28 décembre 2008
12 nov. 2008 à 23:14
Merci pour la réponse mais je cherche vraiment a rendre non disponible ce menu en particulier.  Il est facile pour un utilisateur de refaire apparaitre ce menu (standard)

Merci pour la clarification du <> j'en prend bonne note!  J'ai appris le VB dans le temps avec
line1
line2
etc... 

De la la déformation...

Yann
0
DidierLoche Messages postés 33 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 25 novembre 2008 1
13 nov. 2008 à 19:33
Bonsoir,

Ok ! As-tu essayé tout simplement ceci :
Application.CommandBars("Fonctions Spéciales").Enabled = False

Cela devrait faire disparaitre la barre en question.

Didier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tireur Messages postés 24 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 28 décembre 2008
14 nov. 2008 à 15:52
J'essai au travail lundi et je t'en donne des nouvelles.  Cependant, j'ai tenté plusieurs syntaxes pour la faire disparaitre...

Ce matin je crois que j'ai trouvé comment savoir "word/vba" reconnait cette commandbar.  Je vais enregistrer une nouvelle macro et simplement cliquer dessus.  Ensuite je vais voir avec VBA editor et bingo : j'aurai l'ID officiel de mon menu personalisé, ca va aider pour la désactiver.
0
cs_Tireur Messages postés 24 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 28 décembre 2008
18 nov. 2008 à 03:45
Bonsoir Didier, si je crée une barre de commande "Fonctions spéciales" de cette facon : Oulits, personaliser, onglet barres d'outils, Nouvelle...  ta commande fonctionne!  Ce qui sera fort probablement mon choix puisque c'est rienque de meme que ca marche.

Cependant, j'aimerais vraiment mieux ca : dans word : Outils, personaliser, onglet (2) commandes,  dernier option dans la case de gauche (nouveau menu), et c'est la que je l'ai mise (avec comme nom : Fontions spéciales) avec les autres dans la barre tout en fait en haut de word entre les menus Fen?    Et ma question est comment l'invalider et la valider.
0
cs_Tireur Messages postés 24 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 28 décembre 2008
19 nov. 2008 à 02:47
Ah ben la je suis complé à 150%!!!  Didier, c'est ca que je recherchais!!!  La clé était que le menu devait etre cré en vba et non en mode personaliser dans word.  Comme ca ben je peux faire ce que je veux avec la barre!!!

Encore un gros merci.

Yann
0
DidierLoche Messages postés 33 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 25 novembre 2008 1
19 nov. 2008 à 22:16
Bonsoir,

Je viens de déposer un tutoriel sur le sujet.
En fouillant, je me suis rendu compte ue ce n'était pas si évident que cela et que l'aide sous VBA n'est pas très claire.
Bonne soirée,

Didier
0
Rejoignez-nous