ne pas avoir accés au onglet

B

brigitte

Guest
Bonjour le forum,

Je souhaiterais faire une macro,
qui ne donne pas accés aux mots
clés des onglets "insérer, suprimer, renommer,
déplacer ou copier feuille"
Mon classeur comporte plusieurs feuilles.

Merci d'avance.

@Brigitte@
 
@

@+Thierry

Guest
Bonjour Brigitte et le Forum

C'est un peu bizarre comme demande mais "le client" est Roi (surtout lorsqu'il s'agit d'une "Cliente" (lol)

Je comprends par "Mots Clés" les menus ... (?)

Donc si j'ai bien compris, pour accéder à ce que tu dis il y a DEUX moyens pour le User :
1) Par les Menus ["Edition"], ["Insertion"] ["Format"] (car les accès aux commandes ""insérer, suprimer, renommer, déplacer ou copier feuille" sont dispercée au sein de ces menus....

2) Par le menu contextuel "Click Droit" sur un onglet de feuille. Là toutes ces commandes sont groupée ! :) (ouf!)

Donc tu auras le loisir d'appliquer la même méthode que ci-dessous pour les Menus, car là je n'ai pas le temps de faire toutes les recherche de Controls ID pour les Menus et donc je ne traiterai à titre d'exemple la possibilité 2 (surtout que je ne suis pas formellement sûr que c'est ce que tu cherches à faire...

Voici les codes :
=======================================================================
Sub EnleverPlyCtrl()
Dim Ctrl As Object
For Each Ctrl In Application.CommandBars("Ply").Controls
If Ctrl.ID = 945 Or Ctrl.ID = 847 Or Ctrl.ID = 889 Or Ctrl.ID = 848 Then Ctrl.Delete
Next Ctrl
End Sub

Sub ReMettrePlyCtrl()
Dim Ctrl As Object
For Each Ctrl In Application.CommandBars("Ply").Controls
If Ctrl.ID = 945 Or Ctrl.ID = 847 Or Ctrl.ID = 889 Or Ctrl.ID = 848 Then Exit Sub
Next
With Application.CommandBars("Ply")
.Controls.Add ID:=945, Before:=1
.Controls.Add ID:=847, Before:=2
.Controls.Add ID:=889, Before:=3
.Controls.Add ID:=848, Before:=4
End With
End Sub
=======================================================================

Tu constatera qu'il est plus difficile de remettre en place que d'enlever ces contrôles ! A moins d'utiliser le "Reset" (mais garre à tes autres contrôles perso si ils existent :

Sub Remise()
Application.CommandBars("Ply").Reset
End Sub

Voilà donc ceci n'est que pour le menu contextuel "Click Droit" sur un onglet de feuille...

Pour tes Menus ce sera plus compliqué puisque il faut aller chercher les contrôles dans des barres differentes...

Voici les Noms des Menus et leur controles ID respectifs :

Menu Edition CommandBar ("Edit")
Edit => Delete Sheet ID = 847
Edit => Move or Copy Sheet ID = 848

Menu Insertion CommandBar ("Insert")
Insert => Worksheet ID = 852

Menu Format CommandBar ("Format")
Format => Sheet ID = 30026

La difficulté résidera surtout dans la remise en place si tu as des Menus Persos dans ces CommandBars pour les remettre en place proprement... Et à leur place (Before:=??)....... Sinon tu utilises la méthode Reset...

Bon Courage et Bon Week End
@+Thierry
 
B

brigitte

Guest
Bonjour thierry,

Malgrés que je me suis mal exprimé, tu as tout a fait compris ce que je voulais.
C'est là qu'on reconnait les personnes qui connaissent Excel par coeur.
C'est la solution "2" qui m'intéresse. Je souhaiterais que l'on ai pas accès
au menu contextuel "Click Droit" sur un onglet de feuille.

Je voudrais que l'on ne puisse pas copier la feuil1 vers un autre fichier car le visual basic
ne serai pas copié et celà génèrerait des erreurs.

J'ai essayé ton VB, mais une erreur est affiché "For sans Next" bizzard car il y a bien
un Next Ctrl
Je te remercie de tes indications, je vais essayer de faire une recette avec tout celà.


@Brigitte@
 
@

@+Thierry

Guest
Bonjour Brigitte et STéphane

Merci de ce lien STéphane, j'adore toujours lire les explications du Grand Chef à Trois Plumes !!! :)

Pour ce qui est du For Next, je viens de copier/coller ce code dans un module, tout tourne (j'ai eu peur t'avoir collé un des tests au lieu de la macro finale).

Essaie simplement de rajoujer "Ctrl" dans la Macro "ReMettrePlyCtrl" car je n'ai écrit que "Next" et pas "Next Ctrl".... (Mais chez moi, même sans ça marche (quand on est sur une simple boucle, VBA understand tout seul avec qui va le Next)

Par contre si il est primordiale que tes Users ne puissent pas changer la structure du classeur, comme le dit Laurent Longre, la Protection du Classeur sera efficace et plus simple puisque dans un classeur protégé on ne peut ni renommer, supprimer ou copier/déplacer les feuilles...

Bon Dimanche
@+Thierry
 
B

brigitte

Guest
Bonjour Thierry et Stéphane,


Merci pour le lien Stéphane.


Thierry, J'ai fait les quelques modifications que tu me signales,
cette fois tout est OK, j'aurais du exposé mon problème
plus clairement dès les débuts. Merci.

A bientot car j'ai des tonnes de questions...

Bonne semaine...

@Brigitte@
 

Discussions similaires

Réponses
20
Affichages
645
Réponses
24
Affichages
874

Statistiques des forums

Discussions
314 644
Messages
2 111 528
Membres
111 189
dernier inscrit
Laurent.