Comment Masquer le menu affichage des macros

Bonjour, j'adore excel, mais par moment il y des petites choses de logiques que je n'arrive pas à comprendre.
Je propose dans mon service un fichier blindé de partout (mots de passes sur vba et feuille etc), avec des boutons référencés pour que les gens puissent lancer les macros.

Le problème est, que même avec tout ça, il est possible d’accéder à mes macros interdites donc personnel via le menu : affichage, macros, affichage des macros !!!
ma question : comment interdire cet accès, ou rendre invisible les macros dans ce menu.
Vraiment merci si quelqu'un me trouve une solution.

Bonjour domthiais,

Tu as mis tes macros en private sub?

Bonjour,

A priori via le menu Fichier --> Options --> Personnaliser le ruban --> Affichage, supprimer le bouton Macros.

génial, merci beaucoup pour cette réponse... du coup, je me suis trouvé un peu bête... c'était pas dur...
La réponse était : private sub de funkyfoenky

bonne journée et encore merci.

Bonjour,

Une autre solution consiste à mettre un paramètre optionnel aux Subs et fonctions :

Sub Test(Optional B As Boolean)

End Sub

sub private est bien mais je ne peux plus attaquer mes PROCEDURES de type sous-routine... j'ai une erreur à chaque fois

Alors l'option de "pijaku", fonctionne et ne génère aucune erreur, ça m'a l'air mieux.

Alors question : quand utilise t-on "sur private" (qui m'empêche d'accéder aux PROCEDURES de type sous-routine) !!!! mais qui rend privée toutes mes macros
et

Optional B As Boolean

??? différence...
Donc, merci à pijaku d'être intervenu alors que j'avais déjà mis ce post en résolu...
Je vais essayer de rechercher des infos sur "optional B as boolean".. surtout le B !!!!

sinon, Pijaku, peux-tu m'expliquer pour le B ?

Merci d'avance

Pour les private sub l'appel en sous-procédure est différent.

Par exemple si ta macro est dans le Module "Module1" et qu'elle s'appelle "procedure1", tu peux l'appeler en faisant:

Application.Run "Module1.procedure1"

Et je pense que le B est choisi au hasard et que ça permet juste d'ajouter une variable optionnelle pour rendre la macro invisible car avec des paramètres d'appel. A confirmer par Pijaku

Dans ma Sub, la syntaxe Optional B As Boolean, passe juste un paramètre de type Boolean (variable nommée B) optionnel à ma Sub. On aurait tout aussi bien pu passer Optional I As Integer.

Le fait d'ajouter un paramètre à une Sub, la rend invisible, car, pour "l'appeler", il faudrait lui transmettre une éventuelle valeur...

Exemples :

Sub avec paramètre NON OPTIONNEL :

Sub MaMacro1(Nom As String)
    MsgBox "Salut " & Nom
End Sub
'Macro que l'on appelle ainsi :
'Call MaMacro1("DUPOND")

Maintenant, le fait d'ajouter Optional, rend le caractère de présence de la variable optionnelle.
Exemple :

Sub MaMacro2(Optional Nombre As Long)
    MsgBox "Salut aux " & Nombre & " adhérents"
End Sub
'Macro que l'on appelle ainsi :
'Call MaMacro2()
' ou :
'Call MaMacro2(18)

ok ok Pijaku c'est vrai que ça fonctionne, je me demande comment as-tu pu trouver ça !!!!
avant j'utilisais (voir ci-dessous), et un prof m'avait dit "non non", n'importe quoi... je vais donc revenir à ça...

Application.Run "Module1.procedure1"

Je vais essayer d'utiliser private sub, qui me semble plus facile à comprendre, logique et utiliser Application.run... comme d'hab
Pijaku on est d'accord !! qu'en utilisant private sub pour utiliser les procédures de type sous-routine, on ne peut utiliser que ça ? application.run ?

Sinon, je vous remercie déjà pour vos réponses...

Bonjour Domthiais, le Forum,

Note que même si les utilisateurs peuvent voir le nom des macros par le menu affichage.

Ils ne peuvent voir, puisqu'ils n'ont pas le mot de passe VBA, le code de ces macros.

Lorsque 2 macros sont dans le même Module, tu peux appeler une Private Sub.

Exemple, place ces deux Sub DANS LE MEME MODULE :

Option Explicit

Sub Appel()
    Call MacroCachee1
    'ou plus simplement :
    'MacroCachee1
End Sub

Private Sub MacroCachee1()
    MsgBox "Je suis cachée, viens me chercher!"
End Sub

Lance Appel, tu verras le MsgBox de la macro "cachée".

Si les 2 codes sont dans 2 modules différents, tu n'as que Run et Application.Run pour les lancer, je confirme...

Merci c'est nickel... j'ai un autre problème que je vais mettre dans un autre post... merci

Rechercher des sujets similaires à "comment masquer menu affichage macros"