Mot de passe possible ?

Selecteur

XLDnaute Nouveau
Bonsoir le forum,

J'ai créé un menu (avec des commandes qui déclenchent des macros) personnalisé au niveau de la barre de menu entre "Fenêtre" et le"?". Celui-ci apparaît donc, comme les autres, à l'ouverture d'un classeur. J'ai deux questions à vous poser :

1) Est-il possible que ce menu n'apparaisse qu'à l'ouverture d'un fichier spécifique ?

2) Dans le cas contraire, est-il possible d'affecter un mot de passe lors du click (sur ledit menu) afin de limiter l'accès à certains utilisateurs sur ce menu ?

D'avance je vous remercie pour vos propositions de réponses.

Selecteur.
 

Staple1600

XLDnaute Barbatruc
Re : Mot de passe possible ?

Bonjour à tous

Voici un exemple mais...... problème:mad:

Qu'ai je mal fait dans la macro test()?

du classeur ci-joint

Merci à ceux qui sauront me répondre

Depuis ce matin je cherche en vain.

edit: je mets le code dans le message
(peut etre l'erreur est-elle flagrante, donc pas besoin d'ouvrir le classeur)
Code:
Sub test()
'cette macro = On.Action de l'élément MyMenu2 du menu créé à l'ouverture
'est censer demander un mot de passe
'bah ca marche pas
Dim mdp As String
With Application.CommandBars("Worksheet Menu Bar").Controls("&Menu Test")
mdp = InputBox("mot de passe", "Mode administrateur")
If mdp = "toto" And .Index = 2 Then
.Enabled = True
'Call macadmin
'macadmin= macro résevée à l'administrateur
'ici une simple msgbox pour tester (elle est dans le classeur joint)
Else
.Enabled = False
MsgBox "Mauvais mot de passe, le menu va etre désactivé", vbCritical, "Attention : ERREUR"
End If
End With
End Sub
A+
 
Dernière édition:

Excel_lent

XLDnaute Impliqué
Re : Mot de passe possible ?

Salut à tous,

Cela convient-il ?
Pour l’instant, le menu est accessible avec 2 mots de passe (azerty et qwerty).
Dés que l’un d’eux est saisi, l’accès est autorisé pour cette instance mais quel que soit l’utilisateur au clavier. On peut encore installer d’autres gardes fou.
 

Pièces jointes

  • Menu-MdP.xls
    34 KB · Affichages: 57

Spitnolan08

XLDnaute Barbatruc
Re : Mot de passe possible ?

Re le fil,
Bonjour Excel_lent,

Effectivement Excellent ta proposition comme celle de Staple1600 modifiée:D, fonctionnent mais tout dépend du contenu de la barre de menu personnalisée.
Vos codes ne peuvent fonctionner que pour des boutons actionnant un code créé par macro...
Si ce sont des boutons Excel qui sont repris, ça ne fonctionnera pas car l'attribution d'un code via onaction à ces boutons anihile le code préprogrammé.:(

Cordialement
 

Spitnolan08

XLDnaute Barbatruc
Re : Mot de passe possible ?

Re,

@Staple1600, En fait je n'ai pas regardé dans le détail ta proposition,:p mais comme j'en avais réalisé plusieurs cette nuit dont une semblable, je sais que ça fonctionne...

Si j'ai 5 minutes (Au moins...) pour regarder ce cas je te réponds...:D

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Mot de passe possible ?

Re


-> Spitnolan08Tu réalises du VBA la nuit?

Et le jour aussi... tu dors jamais (lol)


Pour revenir à la la question

On ne peut utiliser Application.Caller dans cas,
Pour identifier quel item on a cliqué dans le menu
 

Staple1600

XLDnaute Barbatruc
Re : Mot de passe possible ?

Bonjour Excel Lent

Théoriquement à identifier le deuxième "item" du menu personnalisé
crée à l'ouverture du classeur

car dans mon idée , ce serait cet élément du menu qui serait réservé à l'admin


(enfin c'est ce que je croyais)
 

Spitnolan08

XLDnaute Barbatruc
Re : Mot de passe possible ?

Re,
-> Spitnolan08Tu réalises du VBA la nuit?

Et le jour aussi... tu dors jamais (lol)
Tu peux parler...;)
On ne peut utiliser Application.Caller dans cas,
Pour identifier quel item on a cliqué dans le menu
Si mais il faut dans tous les cas que l'action sur le bouton déclenche une macro dans laquelle tu places ton Application.Caller... Donc il faut intervenir sur l'action résultant du bouton via une instruction .onaction et on revient toujours au départ : ce ne peut pas être des boutons préprogrammés d'Excel.
En tout cas je ne sais pas faire autrement...

Pour ta demande : Pour le moment j'essaie de m'occuper d'Orban sur un autre fil et il faudrait accessoirement que je me restaure... Mais visiblement Excel_lent s'occupe de toi...

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Mot de passe possible ?

re

Trouvé cela chez microsoft

En utilisant
Application.CommandBars.ActionControl

et les Tag , on n'est pas plus avancé ?
Code:
Sub AddMenuCascade()
'source: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnaro97ta/html/ofcmdbar.asp
     Dim cbmCommandBarMenu        As CommandBar
     Dim cbmDemoMenu              As CommandBarPopup
     Dim cbmCommandBarMenuCascade As CommandBarPopup

    ' Clear the way for new menu.
    On Error Resume Next
        Application.CommandBars("Worksheet menu bar") _
                  .Controls("&Demo Menu").Delete
    ' Identify built-in menu bar to work with.
    Set cbmCommandBarMenu = Application _
                   .CommandBars("Worksheet menu bar")
        ' Add the new menu.
        With cbmCommandBarMenu.Controls
            Set cbmDemoMenu = _
                 .Add(Type:=msoControlPopup, Before:=3)
                ' Set caption for new menu.
                With cbmDemoMenu
                    .Caption = "&Demo Menu"
                    ' Add single menu item and set properties.
                    With .Controls.Add(msoControlButton)
                        .OnAction = [B]"DisplayMessage"[/B]
                        .Caption = "Demo &Menu Item"
                        [B].Tag = "DemoMenuItem"[/B]
                    End With
                End With

          ' Add cascading menu and set properties.
            Set cbmCommandBarMenuCascade = _
                    cbmDemoMenu.Controls.Add(msoControlPopup)

                With cbmCommandBarMenuCascade
                       .Caption = "Demo Cascade"
                ' Add first cascading menu item and set properties.
                    With .Controls.Add(msoControlButton)
                        .Caption = "&Cascade Item 1"
                        .OnAction = "DisplayMessage"
                        .Tag = "Cascade Item 1"
                    End With
                ' Add second cascading menu item and set properties
                    With .Controls.Add(msoControlButton)
                        .Caption = "Cascade I&tem 2"
                        .OnAction = "DisplayMessage"
                        .Tag = "Cascade Item 2"
                    End With
                End With
        End With
End Sub
Code:
[B] Function DisplayMessage()[/B]
    Dim ctl As CommandBarControl
    Set ctl = Application.CommandBars.ActionControl
' Determine which control was clicked and act on it.
    With ctl
       Select Case ctl.Tag
            Case Is = "My New Menu Item"
                MsgBox "The User clicked " _
                        & .Caption
                        Call toto1
            Case Is = "DemoMenuItem"
                MsgBox "The User clicked " _
                        & .Caption
                         Call toto2
            Case Is = "Cascade Item 1"
                MsgBox "The User clicked " _
                        & .Caption
            Case Is = "Cascade Item 2"
                MsgBox "The User clicked " _
                        & .Caption
                         Call toto2
            End Select
        End With
End Function
Code:
Sub toto1()
MsgBox "test 1"
End Sub
Sub toto2()
Dim mdp As String
mdp = InputBox("oo")
If mdp = "oo" Then
MsgBox "test 2"
Else
MsgBox "pas ok"
End If
End Sub
Sub toto3()
MsgBox "test 3"
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Mot de passe possible ?

Re Staple,
Comme j'avais à l'écran le bouton rajouité par Excel_lent j'ai juste changé cela dans ta sub et ça fonctionne :
Code:
Sub testStaple()
Dim mdp As String
With Application.CommandBars("Worksheet Menu Bar").Controls("Excel_lent")
mdp = InputBox("mot de passe", "Mode administrateur")
If mdp = "toto" Then 'And .Index = 2
.Enabled = True
'Call macadmin
'macadmin= macro résevée à l'administrateur
'ici une simple msgbox pour tester (elle est dans le classeur joint)
Else
.Enabled = False
MsgBox "Mauvais mot de passe, le menu va etre désactivé", vbCritical, "Attention : ERREUR"
End If
End With
End Sub
Cordialement
 

Selecteur

XLDnaute Nouveau
Re : Mot de passe possible ?

Bonsoir Staple1600, Spitnolan08, Excel_lent, le forum,

Merci merci et encore merci : Bien je vois que les choses ont avancées !
Quelques précisions concernant le menu personnalisé:
Tout d'abord j'ai créé des macros
puis j'ai créé un menu personnalisé vierge
puis j'ai inséré des commandes que j'ai renommé et auxquelles j'ai affecté lesdites macros

J'espère que ces quelques précisions vont faire avancer le schmilblic.

J'ai testé le fichier de Excel_lent
Menu_MdP et il semble répondre à ma demande, à moins qu'après les précisions du haut vous pensiez le contraire.

Selecteur.
 

Discussions similaires

Réponses
5
Affichages
497
Compte Supprimé 979
C
Réponses
4
Affichages
692

Statistiques des forums

Discussions
312 839
Messages
2 092 695
Membres
105 511
dernier inscrit
karimdauphins