VBA clic droit

Bonjour au forum,

Sur un fichier j'ai placé ce code trouvé sur le web et qui permets d'interdire le clic droit sur les onglets :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Pour le rétablir
Application.CommandBars("Ply").Enabled = True
End Sub

Private Sub Workbook_Open()
'Pour désactiver le menu clic droit sur onglet
Application.CommandBars("Ply").Enabled = False
End Sub

Le souci c'est que si j'ouvre une feuille excel en même temps que mon fichier et que je ferme celui ou il y a le code, le clic droit n'est plus utilisable sur aucun fichier,

Comment peut on procéder afin que le clic droit soit interdit uniquement sur le fichier ou se trouve le code? ?

Merci d'avance,

Cordialement,

Bonjour,

Tu pourrais tester l'ajout d'un désactivation avec

Private Sub Workbook_WindowDeactivate

et de sa réactivation avec

Private Sub Workbook_WindowActivate

En espèrant que cela t'aide

Bonjour,

peut être en désactivant le clic droit uniquement pour le fichier concerné

Application.ActiveWorkbook.CommandBars("Ply").Enabled = False

Merci pour vos deux retours,

J'ai testé la solution de James avant que tu me l’envoie (trouvé sur un forum) mais ça ne marche pas

Pour la solution de Xmenpl , ou dois je placer ce code ? sur ThisWorbook?

Merci d'avance,

Merci pour vos deux retours,

J'ai testé la solution de James avant que tu me l’envoie (trouvé sur un forum) mais ça ne marche pas

Pour la solution de Xmenpl , ou dois je placer ce code ? sur ThisWorbook?

Merci d'avance,

si c'est pour désactiver dans ton workbook open

Private Sub Workbook_Open()
'Pour désactiver le menu clic droit sur onglet
Application.ActiveWorkbook.CommandBars("Ply").Enabled = False
End Sub

Merci Xmenpl pour ce retour,

J'ai copié ton code sur mon fichier test, mais ile met une alerte :

Erreur d'exécution '91' : variable objet ou variable de bloc With non définie,

Ci-joint le fichier !

Merci Xmenpl pour ce retour,

J'ai copié ton code sur mon fichier test, mais ile met une alerte :

Erreur d'exécution '91' : variable objet ou variable de bloc With non définie,

Ci-joint le fichier !

Tu viens de donner toi même la solution "With"

Private Sub Workbook_Open()
'Pour désactiver le menu clic droit sur onglet
With activeworkbook
Application.CommandBars("Ply").Enabled = False
End With
End Sub

Merci pour ton retour,

Je teste le code, et il fonctionne sauf que :

si j'ouvre une feuille par le menu fichier nouveau et que je ferme celui ou il y a le code, le clic droit est désactivè sur tous mes fichiers par la suite ...

Et j'en suis au même point qu'au début

Bonjour massari59264 ,

Voici un fichier bien pratique pour remettre Excel en Ordre :

Merci Florian53,

J’utilise un code fournit sur le forum par Steelson qui me remets mon clic droit actif :

Sub restoration()
Dim Cbar As CommandBar
For Each Cbar In Application.CommandBars
Cbar.Enabled = True
Next
End Sub

Merci pour ton intervention !

Bonjour,

Une piste ?

Application.CommandBars("Ply").Reset

Merci pour ton retour,

Je teste le code, et il fonctionne sauf que :

si j'ouvre une feuille par le menu fichier nouveau et que je ferme celui ou il y a le code, le clic droit est désactivè sur tous mes fichiers par la suite ...

Et j'en suis au même point qu'au début

En effet aprés test il semble que Application.CommandBars("Ply") soit commun à tous les fichiers.

Donc quand tu fermes le fichier concerné il réactive ok mais pas pour les fichiers qui étaient ouvert entre temps

Va falloir penser à un autre moyen pour protéger ton onglet ( onglet caché ; protection mot de passe …. )

Bonjour Jean -Eric,

Ou dois je placer le bout du code proposé?,

Application.CommandBars("Ply").Reset

Donc selon toi Xmenpl , ce n'est pas possible alors de bloquer le clic droit de la souris sur l'onglet mais uniquement sur mon fichier ?,

Ça m'embête

Bonjour Jean - Éric,

J'ai testé le code :

Application.CommandBars("Ply").Reset

Mais ça me donne le même problème !

Bonjour Jean -Eric,

Ou dois je placer le bout du code proposé?,

Application.CommandBars("Ply").Reset

Donc selon toi Xmenpl , ce n'est pas possible alors de bloquer le clic droit de la souris sur l'onglet mais uniquement sur mon fichier ?,

Ça m'embête

Test toi même comme je viens de le faire ; malgré avoir précisé with activeworkbook

la commande bouton droit de l'onglet est désactivé pour tous les onglets et tous les fichiers qui seront

ouvert entre temps.

D'après ton code elle ne sera fonctionnelle que lorsque le premier fichier sera fermé avec la commande inverse. Application.CommandBars("Ply").Enabled = True

Mais pour les nouveaux fichiers qui seront ouverts pas ceux déjà ouverts.

Donc ce n'est pas une commande utilise si on souhaite ouvrir plusieurs fichiers.

Merci du retour Xmenpl,

On doit donc en conclure qu'il n'a pas de code VBA permettant de bloquer le clic droit sur un fichier unique, si l'utilisateur est amené à ouvrir d'autres fichiers en même temps que celui ou il y a le code, sous peine de bloquer l’accès au clic droit !

En poussant le raisonnement, est ce qu'on peut dans ce cas demander via VBA de fermé tous les fichiers ouverts et fermé celui ou il y a le code en dernier afin de mettre l'instruction de réactivé le clic droit !

Merci d'avance,

En fait il faudrait un évenement qui détecte le changement de workbook pour activer ou

désactiver quand on revient sur le fichier concerné.

En fait il faudrait un évenement qui détecte le changement de workbook pour activer ou

désactiver quand on revient sur le fichier concerné.

Tu penses que c'est possible?

Je fais des recherches sur le web mais je n'ai rien trouvé

Je pense que j'ai trouvé

Private Sub Workbook_Activate()
With ActiveWorkbook
Application.CommandBars("Ply").Enabled = False
End With
End Sub

Private Sub Workbook_Deactivate()
With ActiveWorkbook
Application.CommandBars("Ply").Enabled = True
End With
End Sub

Private Sub Workbook_Open()
'Pour d?sactiver le menu clic droit sur onglet
With ActiveWorkbook
Application.CommandBars("Ply").Enabled = False
End With
End Sub

il faut les quatres codes dans workbook 1 à l'ouverture 1 autre quand on change de workbook

le troisième quand on revient sur le workbook. et à la fermeture de nouveau avec un =True

Avec celui pour before close aussi çà fait 4

Bonsoir Xmempl ,

Je ne pourrais tester ton code que lundi mais si ca marche chapeau , je ne kau vu nulle part ailleurs tes 4 codes en même temps ...

Effectivement je n'en voyais que 3 lol

Merci je teste lundi et te confirme si c'est ok !

Cordialement,

Rechercher des sujets similaires à "vba clic droit"