Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
J'aimerais savoir si quelqu'un sait comment je peux faire pour exiger un mot de passe avant que la feuille devienne en mode création.
En fait, comme le mode création empêche les macros de s'exécuter, je veux que seul le programmeur puisse avoir accès en mode création.
Donc, je veux que lorsque l'utilisateur demande le mode création, le fichier demande un mot de passe et seulement si le mot de passe est valide, le mode création s'active. Sinon, une phrase du genre "Vous ne pouvez pas activer le mode création." doit apparaître.
Bruno, le mode création, c'est lorsque tu cliques sur l'equerre sur la barre d'outils Visual Basic.
C'est vrai qu' avec l'enregisterur de macros, il n' ya pas de code. Sinon, il faudrait trouver son code sur le barre d'outils et le mettre en false ou true (mais je ne sais pas quoi).
Solution 2 qui désactive seulement les boutons et la toolbox.
A placer dans le code du Thisworbook de ton projet
Code:
Private Sub Workbook_Open()
Dim CmdBtn As office.CommandBarButton
'Pour chaque bouton de la commande barre Visual Basic
For Each CmdBtn In Application.CommandBars("Visual Basic").Controls
Select Case CmdBtn.Caption
Case "&Design Mode", "&Visual Basic Editor", "&Record New Macro...", "&Macros..."
'si le bouton est en position active on le desactive(ne fonctionne pas pour le bouton toolbox)
If Not CmdBtn.State = msoButtonUp Then CmdBtn.State = msoButtonUp
CmdBtn.Enabled = False
Case "Control T&oolbox"
'si le bouton de la toolbox est enfoncé cela veut dire que la toolbox est visible donc on la cache
On Error Resume Next
If CmdBtn.State = msoButtonDown Then Application.CommandBars("Control Toolbox").Enabled = False
CmdBtn.Enabled = False
End Select
'CmdBtn.Enabled = True
DoEvents
Next
End Sub
Puis de la même manière que pour la solution précédente tu ajoutes un bouton qui permettra de remettre tout cela dans l'ordre via un mot de passe.
N'oublie pas non plus de remettre tout dans l'ordre à la fermeture de ton fichier et ceci est valable pour toutes les solutions.
Mais voila la solution 2 n'empêchera pas l'utilisateur de rajouter dans une autre barre un des boutons désactiver et de l'utiliser.
Enfin, 3ieme solution qui est d'utiliser l'événement clic sur les boutons de la collection CommandBarButton. Pour cela il va falloir créer une classe:
A placer dans le code du Thisworbook de ton projet
Code:
Private Sub Workbook_Open()
'on initialise la classe a l'ouverture du fichier
Set XlAppli.XL = Excel.Application
Call XlAppli.InitClass
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'on vide la classe a la fermeture du fichier
Call XlAppli.EmptyClass
End Sub
Dans un module :
Code:
Option Explicit
Public XlAppli As New ClasseAppli
Tu ajoutes à ton projet un nouveau module de classe que tu appelleras :
ClasseAppli
Dans ce module de classe tu mets le code suivant :
Code:
Option Explicit
Public WithEvents XL As Excel.Application
Dim ClassCmdBrBtn() As ClasseCommandeBarBouton, NbButton As Integer
'Permet de vider la classe
Public Sub EmptyClass()
Dim i As Integer
For i = 1 To NbButton
Set ClassCmdBrBtn(i).BoutonBarre = Nothing
Next
End Sub
'Remplissage de la classe
Public Sub InitClass()
Dim i As Integer, MyCmdBar As CommandBar
NbButton = Application.CommandBars("Visual Basic").Controls.Count
'on determine le nombre de bouton et on dimensionne la variable tableau
ReDim Preserve ClassCmdBrBtn(NbButton)
'on Ajoute a la classe chaque bouton de la barre Visual Basic
For i = 1 To Application.CommandBars("Visual Basic").Controls.Count
Set ClassCmdBrBtn(i) = New ClasseCommandeBarBouton
Set ClassCmdBrBtn(i).BoutonBarre = Application.CommandBars("Visual Basic").Controls(i)
Next
End Sub
Tu ajoutes une nouvelle fois un module de classe à ton projet que tu appelleras :
ClasseCommandeBarBouton
Puis tu lui ajoutes le code suivant
Code:
Option Explicit
Public WithEvents BoutonBarre As office.CommandBarButton
Private Sub BoutonBarre_Click(ByVal Ctrl As office.CommandBarButton, CancelDefault As Boolean)
Select Case Ctrl.Caption
Case "&Design Mode", "&Visual Basic Editor", "Control T&oolbox", "&Record New Macro...", "&Macros..."
CancelDefault = True
MsgBox "Vos droits sur ce fichier ne vous permettent pas d'accéder à ces fonctions !", vbExclamation
End Select
End Sub
Pour que la classe soit chargée tu enregistre ton fichier tu le fermes et l'ouvres à nouveau.
Tu peux aussi combiner toute ces solutions mais avant de le faire je te conseil de les tester séparément
Par contre cela n'empêchera pas l'utilisation de Alt+F11 pour l'accès au VBE.
ci-joint une version corrigée du fichier deja joint plus haut.
Cette nouvelle version corrige un probleme sur le vidage de la classe et integre le code de la solution 2.
Bigfish, ton fichier fonctionne bizarrement, il fonctionne une fois puis si on clique sur un autre bouton de la Barre d'outils Visual basic, il ne fonctionne plus.
On ne pourrait pas faire plus simple!
Mj13 : Quellle version du fichier as-tu utilisé ? De quel autre bouton parles-tu ? si tu as utilisé la premiere version il est en effet possible que ce probleme existe. Essai la 2ieme version.
La solution la plus simple est la premiere. De toute façon toute les solutions on 2 failles ! La premiere cela ne limite en rien l'utilisation de la combinison de touches Alt+F11 et la deuxieme est qu'une macro qui ce lance au demarrage peut etre stopé par l'utilisation de la touche Shift lors de l'ouverture du fichier (apres acceptation de l'utilisation des macros) ce qui permet d'annuler toute tentative de limitation par macro. Il n'y a pas de miracle un fichier excel est une passoire !
Aimedjie: ce genre de reponse ne m'aidera pas a t'aider. J'ai testé ce fichier sur 2 PC et il fonctionne sur les 2.
- Comment l'as tu utilisé ?
- As-tu cliqué sur l'un des boutons de la barre Visual Basic d'excel ?
- As-tu un message d'erreure ?
-Si oui le quel ?
Bigfish, lorsque j'ai testé ta macro V2 sur XL2003, je n'étais pas très satisfait du résultat. En cela que si je cliquait ensuite sur un bouton de la Barre outils (BO) Visual basic, j'arivai a ce que le bouton soit a nouveau actif.
Du coup, je me suis penché sur la question. Outre que l'on peut toujours désactiver ce que l'on veut sur Excel; je pense que Aimedjie voulait une solution simple.
J'ai donc recherché un ancien post ou je voulais désactiver la bare d'outils Web soit en permanence, soit la faire revenir quand j'en avais envie (c'est ce que j'appelle la liberté d'Excel).
Et c'était Staple qui m'avait donné la lumière.
Donc voici une autre solution. Je pense que c'était proche de ta solution 1.
Attention elle fonctionne sous XL2003 en version française mais pas sur Xl2007 puisqu'il n' ya plus ces barres d'outils. D'ailleurs si quelqu'un a le code pour XL2007 ce serait super.
en version française et oui ! je suis en version anglaise donc il est normale que cela ne fonctionne pas pour vous. Désolé d'avoir zapper ce point.
La barre d'outil est normalement desactivé à l'ouverture du fichier mais du fait de ce probleme de compatibilié cela n'as pas été le cas lorsque tu as testé la V2. D'ou la possibilité que tu as de cliquer sur un des element de cette barre. Si un des controles de la barre d'outil est selectionné le mode creation est automatiquement activé. L'activation du mode creation stop l'utilisation des macros et donc de la classe.
Je n'ai helas pas les moyens de connaitre le nom des barres et du caption des boutons pour me permettre de modifier ce code pour qu'il puisse fonctionner pour vous. Donc si une ame charitable passe par ici ce serait sympas de le faire pour le forum.
Gael en effet, la question au départ était un peu complexe (gestion de mot de passe).
Mais mon code permet en partie de faire ce qu'il demande, quelques soit la version puisqu' avec les indicesde 1 à n, on peut sélectionner le bouton que l'on veut. je pense qu'à ce stade, il vaut mieux donner des pistes que de faire tout le travail.
De plus gérer ces boutons n'est pas simple et assez risqué pour le neophyte (risque de perdre le contrôle du bouton définitivement).
Donc mon conseil: Attention a utiliser avec précaution.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD