XL 2016 Rendre inactif le bouton affiché liste macro.

Sacha1980

XLDnaute Nouveau
Hello tout le monde,

Je cherche le moyen de pouvoir rendre inactif le bouton afficher la liste des macros à l'ouverture du classeur afin d'empêcher l'utilisation de certaines macros par des joueurs, car ce classeur sera dispo en téléchargement.

Dans la liste des macros il y a des macros qui inversent la première et il ne faut pas que les joueurs puissent inverser en cliquant sur la liste des macros ou alt+F8 et inverser en faisant exécuter la macro !

Le bouton afficher la liste des macros est dispo dans le menu développeur ainsi que dans le menu affichage.

donc ce bouton :
Capture.PNG

Est-ce possible ? c'est pour mettre dans Workbook_Open()

Merci.
Sacha.
 

Sacha1980

XLDnaute Nouveau
maintenant, si vraiment tu veux inverser, tu peux mettre :

VB:
Sub Onglet_visible(Flg As Boolean)
  ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
End Sub

Sub Essai()
  Onglet_visible 0
End Sub

à chaque fois que tu exécuteras la sub Essai(), les onglets seront successivement masqués puis affichés ; remarque : le 0 n'est pas une erreur : c'est l'équivalent de False ; j'aurais aussi pu mettre Onglet_visible -1 car -1 est l'équivalent de True ; et de toutes façons, 0 ou 1, peu importe puisque Flg est un argument bidon car non utilisé dans la sub Onglet_visible().​

soan
Oui, j'ai bien compris, mais je crois que tu n'as pas bien compris. Ce que je veux c'est juste de ne pas pouvoir exécuter la macro via afficher la liste des macros alt+F8 !, mais de pouvoir moi avoir la possibilité de l'exécuter via le module dans le VBA !!

Si je laisse flg as boolean je ne peux pas !

Et si je fais comme tu dis avec essais, ben celle-ci apparait dans la liste des macros et donc exécutable par n'importe qui ! ce que je ne souhaite pas évidemment

Exemple ainsi pas possible car essai est dans la liste des macros et donc facile de l'exécuter !

VB:
Sub Onglet_visible(Flg As Boolean)
  ActiveWindow.DisplayWorkbookTabs = True
End Sub
Sub Essai()

  Onglet_visible 0

End Sub
 

soan

XLDnaute Barbatruc
bon, alors dans ce cas, il faudrait un mot de passe que toi seul connaît.

VB:
Option Explicit

Dim pwd$ 'password = mot de passe

'mettre du code VBA pour initialiser pwd selon l'utilisateur qui est connecté ;
'si c'est toi en tant qu'Administrateur qui t'es connecté : pwd = "loup"

Sub Onglet_visible()
  If pwd = "loup" Then ActiveWindow.DisplayWorkbookTabs = True
End Sub

ainsi, la sub affichera les onglets uniquement si c'est toi qui est connecté ; si une autre personne s'est connectée (donc avec un autre mot de passe que le tien), le test pwd = "loup" sera faux et l'instruction d'affichage des onglets ne sera pas exécutée.​

soan
 

Sacha1980

XLDnaute Nouveau
tiens regarde
VB:
Function Onglet_visible()
  ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
End Function

Sub Essai()
  Onglet_visible
End Sub
tu ne verra pas onglet_visible dans la liste de macro mais si tu lance la sub essai ca marchera

comme chez renault c'est simple

bonsoir Soan
Même problème que décrit précédemment, je retrouve essai dans la liste des macros Alt+F8 et donc tout le monde peut l'exécuter et c'est cela que je ne veux pas, sauf moi dans le projet VBA !

Par contre, si j'enlève essai et laisse seule le code avec Function alors dans le projet VBA je peux l'exécuter, tout en étant plus dans la liste des macros. C'est bien cela que je souhaitais ! Reste maintenant a appliqué cela sur d'autres macros lol.
 

Sacha1980

XLDnaute Nouveau
bon, alors dans ce cas, il faudrait un mot de passe que toi seul connaît.

VB:
Option Explicit

Dim pwd$ 'password = mot de passe

'mettre du code VBA pour initialiser pwd selon l'utilisateur qui est connecté ;
'si c'est toi en tant qu'Administrateur qui t'es connecté : pwd = "loup"

Sub Onglet_visible()
  If pwd = "loup" Then ActiveWindow.DisplayWorkbookTabs = True
End Sub

ainsi, la sub affichera les onglets uniquement si c'est toi qui est connecté ; si une autre personne s'est connectée (donc avec un autre mot de passe que le tien), le test pwd = "loup" sera faux et l'instruction d'affichage des onglets ne sera pas exécutée.​

soan
J'ai essayé ton code, mais il ne me demande pas le mot de passe pour s'exécuter, d'ailleurs il ne fait rien du tout.

L'idée est bonne ci cela fonctionnait, je pourrais rassembler les macros que je veux cacher et seule moi pourrais les exécuter .
 

soan

XLDnaute Barbatruc
ok, donc la solution de patrick était la bonne ! 👍 ➯ problème réglé ! :)



mon code VBA n'était qu'un exemple à compléter pour faire ce qui était écrit en commentaire : une gestion des mots de passe selon la personne connectée ; si toi = Administrateur, alors pwd = "loup" ; pour d'autres utilisateurs, d'autres mots de passe ; mais ça sort du cadre de ce fil. ;)

sans cette gestion des mots de passe, c'est tout à fait normal que mon code VBA ne fait rien ! :D

soan
 

Sacha1980

XLDnaute Nouveau
ok, donc la solution de patrick était la bonne ! 👍 ➯ problème réglé ! :)



mon code VBA n'était qu'un exemple à compléter pour faire ce qui était écrit en commentaire : une gestion des mots de passe selon la personne connectée ; si toi = Administrateur, alors pwd = "loup" ; pour d'autres utilisateurs, d'autres mots de passe ; mais ça sort du cadre de ce fil. ;)

sans cette gestion des mots de passe, c'est tout à fait normal que mon code VBA ne fait rien ! :D

soan
Ah d'accord lol, oui, mais je ne suis pas aussi calé que cela moi hein, je suis qu'un apprenti Jedi mdrrr.

Donc si j'ai bien compris, le système de mot de passe, c'est que moi j'ai un mot de passe qui me permet donc d'exécuter les macros qui seraient dans la liste des macros et les autres utilisateurs, il leur faudrait un autre mot de passe, mais bon, perso, oui moi ok un mot de passe, mais les autres utilisateurs, pas besoin de mot de passe puisque je ne veux pas qu'ils puissent les exécuter dans la liste des macros !!
 

Sacha1980

XLDnaute Nouveau
Bonjour le fil,

Je n'ai pas lu/compris toute la discussion :eek: mais apparemment c'est réglé

Nota : tout ça pour simplement ne pas lancer une macro via le bouton 🤣
Bonjour tout le monde,

BrunoM45, Je n'apprécie pas trop votre petite moquerie en Nota !!!

En effet, si vous avez les connaissances en langage VBA c'est très bien, mais cela n'est pas le cas de tout le monde ! Je pense que vous-même, dans vos débuts, vous avez été comme moi, un simple débutant qui posais des questions et demandant de l'aide ? A moins que vous ne soyez un brillant élève surdoué et n'ayant jamais besoin de personne !

Alors, histoire que vous compreniez bien le but de ma demande puisque vous parler de bouton, je ne pense pas que j'ai demandé dans le sens d'empêcher une macro de se lancer via un bouton ? Il serait quand même bête de mettre un bouton si je ne voulais pas que l'on utilise ce bouton, cela me paraît logique.

Dans ma demande, il était question d'empêcher une autre personne que moi-même de pouvoir inverser une situation via la liste des macros, vous savez quand vous faites Alt+F8 et ensuite se positionner sur la macro et cliquer sur exécuter.

Si je mets des situations dans mon fichier c'est que forcément, j'ai des raisons, il me paraît normal dans ce cas d'éviter que la situation ne puisse être inversée par d'autres personnes car le fichier sera partagé.

Donc, ma demande consistait de soi griser la fonction d'appel de la liste des macros Alt+F8 ou bien rendre invisible la macro concernée dans la liste des macros et ainsi personne ne peut inverser la situation sauf moi-même via le projet VBA qui est sécurisé par mot de passe ! Oui je sais, il est possible de craquer un fichier Excel, toute sécurité n'est qu'illusoire ! Mais bon, je ne vois aucune raison que les joueurs s'amusent à chercher à craquer le fichier, il n'y a pas de secret ni même des données sensibles et devant rester privé, puis faudrait être fou de partager un fichier avec des données sensibles !!

Voilà donc le but de ma démarche ici, en espérant que vous avez bien compris ma demande maintenant.

Donc avant de balancer des phrases du genre que vous avez écrite en Nota et d'un aspect de moquerie avec votre émoticône, il serait sage déjà de respecter ma demande et de vous dire qu'il y a certainement une raison dans le but de la demande !!!

Même si pour certaines personnes qui ont les connaissances en VBA et que certains appels d'aide sont pour vous inutiles pour une raison ou une autre, il faut respecter la créativité des demandeurs et le but de leur démarche et non s'en moquer ouvertement !!

Sacha.
 
Haut Bas