Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Empêcher le mode création

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 !

Aimedjie

XLDnaute Occasionnel
Bonjour,

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.

Merci.
 
Re : Empêcher le mode création

Bonjour Aimedjie

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.
C'est quoi ce mode création !?

Est-ce quelque chose qui est déjà développé en VBA !?

Merci de nous joindre un fichier pour la compréhension.

A+
 
Re : Empêcher le mode création

Bonjour à tous

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).
 
Re : Empêcher le mode création

Salut,

Plusieurs Solutions:

Solution 1 :
A placer dans l'événement Workbook_Open du code du Thisworbook de ton projet

Application.CommandBars("Visual Basic").Enabled = False

Ceci vas désactiver la barre des macros et il sera impossible pour l'utilisateur de la réactiver autrement que par code.

Puis tu ajoutes un bouton qui permet de réafficher la barre via un mot de passe.

Application.CommandBars("Visual Basic").Enabled = True

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.

A+ 🙂
 
Dernière édition:
Re : Empêcher le mode création

Bonjour Bigfish, le forum

Merci pour le fichier, je regarderai cela demain sur Xl2003.

J'aime bien l'idée des modules de classe pour ma culture personnelle.
 
Re : Empêcher le mode création

Bonjour à tous.

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!
 
Re : Empêcher le mode création

Bonjour,

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 !

Bonjour BigFish,

Ton dernier fichier ne fonctionne pas.

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 ?

A+🙂
 
Re : Empêcher le mode création

Bonjour Aimedjie,Bigfish, JCGL

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.
 

Pièces jointes

Re : Empêcher le mode création

Mj13,

tu as repondus au probleme quand tu as dit :

Attention elle fonctionne sous XL2003 en version française... .

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.

A+ 🙂
 
Re : Empêcher le mode création

Bonsoir à tous,

Sur Excel 2003, on peut désactiver le mode création par la commande:

Code:
    Application.CommandBars("Control Toolbox").Controls(1).Enabled = False

Mais comme cela me paraît un peu simpliste par rapport au contenu du Fil, je ne suis pas sûr d'avoir bien compris le problème.

@+

Gael
 
Re : Empêcher le mode création

Re bonjour à tous

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

Discussions similaires

B
Réponses
10
Affichages
4 K
M
Réponses
2
Affichages
1 K
M
T
Réponses
3
Affichages
2 K
thomasz
T
Y
Réponses
0
Affichages
21 K
Yass21
Y
J
Réponses
7
Affichages
2 K
jayroom
J
C
Réponses
2
Affichages
2 K
charleszb
C
T
Réponses
2
Affichages
1 K
S
Réponses
25
Affichages
3 K
skye.in.sky
S
J
Réponses
3
Affichages
2 K
JerCaz
J
M
Réponses
4
Affichages
1 K
M
S
Réponses
2
Affichages
2 K
Satowaks
S
P
Réponses
2
Affichages
1 K
Philippe
P
B
  • Question Question
Réponses
5
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…