Microsoft 365 Protection shapes

Marvin57

XLDnaute Occasionnel
Bonsoir,

je suis à la recherche d'un code vba me permettant de protéger des shapes (formes) qui se trouvent sur la page accueil de mon fichier et qui me servent à actionner des macros.

Ils se nomment par ex. : Rectangle: coins arrondis 1 et ainsi de suite jusqu'au numéro 12.

Donc je souhaiterai que lors de l'ouverture du fichier les shapes en questions soient bloquées afin de ne pas pouvoir actionner les macros.

Merci pour vos infos.

Marvin57
 
Solution
Bonsoir Marvin, et bienvenu sur XLD, bonsoir Patrick,
Peut être une astuce en utilisant une variable public.
A l'ouverture du fichier cette variable non initialisée vaut "".
Dans les macros il suffit de tester cette variable pour savoir si on peut exécuter la macro.
On débloque les macros en mettant cette variable à 1.
Le tout avec :
VB:
Public Autorisation
Sub Appui()
    If Autorisation = "" Then Exit Sub  ' A mettre en tête de toutes les macros des boutons
    MsgBox "Vous avez appuyé sur le bouton : " & Application.Caller
End Sub
Sub Déblocage()
    Autorisation = 1    ' Mettre 1 pour autoriser les macros
End Sub
Sub Reblocage()
    Autorisation = ""   ' Mettre "" pour bloquer les macros
End Sub

patricktoulon

XLDnaute Barbatruc
bonsoir
ça c'a n'est pas possible
te reste plus qu' à
ajouter une sub vide dans un module standard
et l'open du workbook
d'ajouter dynamiquement des shapes de même forme dessus en prenant soin de leur donner un fiil.visible=msotrue et .fill.transparency=1 et leur .onction"le nom de ta ta sub vide "

elle sont transparentes mais empêcheront l’accès a tes shapes cliquables

les supprimer au moment opportun
;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Marvin, et bienvenu sur XLD, bonsoir Patrick,
Peut être une astuce en utilisant une variable public.
A l'ouverture du fichier cette variable non initialisée vaut "".
Dans les macros il suffit de tester cette variable pour savoir si on peut exécuter la macro.
On débloque les macros en mettant cette variable à 1.
Le tout avec :
VB:
Public Autorisation
Sub Appui()
    If Autorisation = "" Then Exit Sub  ' A mettre en tête de toutes les macros des boutons
    MsgBox "Vous avez appuyé sur le bouton : " & Application.Caller
End Sub
Sub Déblocage()
    Autorisation = 1    ' Mettre 1 pour autoriser les macros
End Sub
Sub Reblocage()
    Autorisation = ""   ' Mettre "" pour bloquer les macros
End Sub
 

Pièces jointes

  • Blocage.xlsm
    14.9 KB · Affichages: 3

Marvin57

XLDnaute Occasionnel
Bonjour Patricktoulon, Bonjour Sylvanu et Bonjour le forum,

Merci pour votre accueil et vos informations.

Je vais mettre en place l'idée de Sylvanu car cela me semble plus adapté au fichier. J'ai fais des essais et cela me convient très bien.

Merci encore à vous deux.

Marvin57
 

Statistiques des forums

Discussions
314 630
Messages
2 111 354
Membres
111 113
dernier inscrit
ADA1327