VBA EXCEL: Désactiver les CommandBar controls

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 !

Aragon10

XLDnaute Occasionnel
Bonjour,

Je voudrais désactiver sur EXCEL quelques "CommandBar controls" pour empêcher quelque utilisateurs de mon fichier d’insérer,masquer, Afficher,supprimer et de renommer mes feuilles EXCEL. j'ai trouvé ce code mais je peux quand même supprimer et modifier mes feuilles:

Code:
Option Explicit 

Private Sub Worksheet_Activate() 
     
    Dim OptionMenu As Object 
    Dim ctrlMenu As Object 
    Dim MenuItem As Object 
     
    Set OptionMenu = CommandBars(1).Controls 
    Set ctrlMenu = OptionMenu("Edition") 
     
    For Each MenuItem In ctrlMenu.Controls 
        If (MenuItem.ID = 847) Then 
            MenuItem.Enabled = False 
            Exit For 
        End If 
    Next MenuItem 
     
End Sub


J'ai commencé par désactiver les options des onglets(cliq droit) et il me manquait le reste.


Merci pour votre aide.
 
Dernière édition:
Re : VBA EXCEL: Désactiver les CommandBar controls

Bonjour,

Je voudrais désactiver sur EXCEL quelques "CommandBar controls" pour empêcher quelque utilisateurs de mon fichier d’insérer,masquer, Afficher,supprimer et de renommer mes feuilles EXCEL
Pour cela, tu peux protéger le classeur
Révision / Protéger le classeur / Structure / OK

Caillou
 
Dernière édition:
Re : VBA EXCEL: Désactiver les CommandBar controls

Bonjour,

C'est assez ardu car il faut identifier non seulement les CommandBarButton mais également leur parent CommandBar.
Ainsi, on a des synonymes :
&Supprimer... ID:292 Parent:Cell
&Supprimer ID:293 Parent:Row
&Supprimer ID:294 Parent:Column

D'autre part, seuls les CommandBarButtons des menus contextuels pourront être traités.
Les commandes du Ruban ne le seront pas.

J'ai un programme qui permet d'identifier quel CommandBarButton a été cliqué et qui affiche son nom, son identificateur, son parent CommandBar.
Si vous êtes intéressé, je peux le soumettre. Mais il fonctionne avec des classes. A vous de me dire.
 
Re : VBA EXCEL: Désactiver les CommandBar controls

Merci caillou et PMO2 pour vos réponses utiles.

PMO2, pouvez vous svp me transmettre votre code afin de connaitre quel CommandBarButton a été cliqué et comment faire par la suite pour les masquer ?

Merci beaucoup
 
Dernière édition:
Re : VBA EXCEL: Désactiver les CommandBar controls

PMO2, pouvez vous svp me transmettre votre code afin de connaitre quel CommandBarButton a été cliqué et comment faire par la suite pour les masquer ?

Cela ne va va pas masquer les CommandBarButtons mais bloquer leur action.

1) Créez un module de classe "clsApplication" et copiez le code suivant dans sa fenêtre de code
Code:
Public WithEvents XL As Excel.Application
Dim clsCBB() As clsCommandBarButton
Dim cpt&

Public Sub InitClass()
Dim CB As CommandBar
Dim k&
Dim i&
For k& = 1 To Application.CommandBars.Count
  Set CB = Application.CommandBars(k&)
  For i& = 1 To CB.Controls.Count
    If CB.Controls(i&).Type = msoControlButton Then
      cpt& = cpt& + 1
      ReDim Preserve clsCBB(1 To cpt&)
      Set clsCBB(cpt&) = New clsCommandBarButton
      Set clsCBB(cpt&).CBB = CB.Controls(i&)
    End If
  Next i&
Next k&
End Sub

Public Sub EmptyClass()
Dim i&
For i& = 1 To cpt&
  Set clsCBB(i&).CBB = Nothing
Next i&
End Sub

2) Créez un module de classe "clsCommandBarButton" et copiez le code suivant dans sa fenêtre de code
Code:
Public WithEvents CBB As Office.CommandBarButton

Private Sub CBB_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
'/// Ne pas mettre de MsgBox car la routine risque, selon le cas, de s'effectuer plusieurs fois ///

'--- Cette instruction ne set qu'à identifier quels CommandBarButtons ont été cliqués ---
'--- Une fois identifiés, elle ne sert plus à rien et devra être flaguée ou supprimée ---
Sheets("Test").[g1] = Ctrl.Caption & "/" & Ctrl.ID & "/" & Ctrl.Parent.Name

'### Exemple : &Supprimer  847 Ply (suppression de l'onglet) ###
If Ctrl.ID = 847 Then
  '°°° Il vaut mieux ne pas utiliser MsgBox pour la raison évoquée en '///
  MsgBox "La suppression de l'onglet n'est pas autorisée"
  '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  CancelDefault = True
End If
'################################################################

CancelDefault = True 'même remarque que '---
End Sub
C'est dans ce module de classe qu'on peut agir sur l'action du CommandBarButton qui a été cliqué (voir '### Exemple)

3) Copiez le code suivant dans un module Standard
Code:
Public AppXL As New clsApplication

4) Copiez le code suivant dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Activate()
Set AppXL.XL = Excel.Application
Call AppXL.InitClass
End Sub

Private Sub Workbook_Deactivate()
Call AppXL.EmptyClass
End Sub
 

Pièces jointes

Re : VBA EXCEL: Désactiver les CommandBar controls

Bonjour PMO2,

Merci pour votre aide précieuse.

Je suis débutant en VBA, pouvez-vous svp m'orienter sur le fonctionnement de votre fichier ? même en cliquant sur les command bar il n'y a pas de changement ou d'indication sur les codes ! j'arrive pas à le manipuler :/
 
Re : VBA EXCEL: Désactiver les CommandBar controls

Bonjour,

Si vous êtes débutant, le code que j'ai fourni est peut être trop compliqué.

1) Cliquez droit sur l'onglet "Test" puis cliquez gauche sur "Supprimer"
1.jpg

2) Le code intercepte le CommandBarButton qui est le 847 (&Supprimer/847/Ply &Supprimer 847 Ply)
Comme le code justement le traite, il interdit son usage
Code:
'### Exemple : &Supprimer  847 Ply (suppression de l'onglet) ###
If Ctrl.ID = 847 Then
  '°°° Il vaut mieux ne pas utiliser MsgBox pour la raison évoquée en '///
  MsgBox "La suppression de l'onglet n'est pas autorisée"
  '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  CancelDefault = True
End If
'################################################################
2.jpg
 

Pièces jointes

  • 1.jpg
    1.jpg
    75.2 KB · Affichages: 93
  • 2.jpg
    2.jpg
    57.5 KB · Affichages: 83
- 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

Réponses
7
Affichages
212
Réponses
4
Affichages
461
Réponses
4
Affichages
177
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Retour