Comment empêcher de lancer une macro par un utilisateur ?
4 réponses
thigautier
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs
personnes (c'est un fichier qui comporte plusieurs macros avec déclenchements
automatiques ).
Le gros soucis c'est que malgré les protections, l'utilisateur peut toujours
exécuter (au hasard) une macro en passant par Outil\Macro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou visibles
de l'utilisateur ?
Option private module et tes macros deviendront non visible par macro / macros
Salutations Titus
"ThiGautier" a écrit dans le message de news:
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs personnes (c'est un fichier qui comporte plusieurs macros avec déclenchements
automatiques ). Le gros soucis c'est que malgré les protections, l'utilisateur peut toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou visibles
de l'utilisateur ?
Merci d'avance pour le remède...
Michel Gaboly
Bonsoir,
Autre solution : si tu as besoin de pouvoir utiliser certaines des macros à partir d'autres modules, et que "Private Module" ne te convient pas, tu peux également utiliser un "faux" argument :
Sub Toto(i) Msgbox "Macro masquée" End Toto
L'argument i n'est pas utilisé dans le code. Cependant, sa simple présence, fait que la macro n'est plus affichée : puisqu'on est censé devoir lui fournir un argument, elle ne peut être appelée que par du code VBA, et donc n'apparaît plus.
Cependant, si une autre procédure l'appelle, tu auras une erreur de compilation (Argument non facultatif).
La solution est simple, et consiste à ajouter le mot "Optional" :
Sub Toto(Optional i) Msgbox "Macro masquée" End Toto
La macro Toto peut à nouveau être appelée à partir d'une autre procédure.
Salut ThiGautier
En tête de module tu saisis
Option private module et tes macros deviendront non visible par macro / macros
Salutations Titus
"ThiGautier" a écrit dans le message de news:
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs personnes (c'est un fichier qui comporte plusieurs macros avec déclenchements
automatiques ). Le gros soucis c'est que malgré les protections, l'utilisateur peut toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou visibles
de l'utilisateur ?
Merci d'avance pour le remède...
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Bonsoir,
Autre solution : si tu as besoin de pouvoir utiliser certaines des
macros à partir d'autres modules, et que "Private Module" ne te
convient pas, tu peux également utiliser un "faux" argument :
Sub Toto(i)
Msgbox "Macro masquée"
End Toto
L'argument i n'est pas utilisé dans le code. Cependant, sa simple
présence, fait que la macro n'est plus affichée : puisqu'on est
censé devoir lui fournir un argument, elle ne peut être appelée
que par du code VBA, et donc n'apparaît plus.
Cependant, si une autre procédure l'appelle, tu auras une erreur
de compilation (Argument non facultatif).
La solution est simple, et consiste à ajouter le mot "Optional" :
Sub Toto(Optional i)
Msgbox "Macro masquée"
End Toto
La macro Toto peut à nouveau être appelée à partir d'une autre
procédure.
Salut ThiGautier
En tête de module tu saisis
Option private module
et tes macros deviendront non visible par macro / macros
Salutations
Titus
"ThiGautier" <thigautier@aol.com> a écrit dans le message de
news:20040206155855.21837.00001559@mb-m14.aol.com...
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs
personnes (c'est un fichier qui comporte plusieurs macros avec
déclenchements
automatiques ).
Le gros soucis c'est que malgré les protections, l'utilisateur peut
toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou
visibles
Autre solution : si tu as besoin de pouvoir utiliser certaines des macros à partir d'autres modules, et que "Private Module" ne te convient pas, tu peux également utiliser un "faux" argument :
Sub Toto(i) Msgbox "Macro masquée" End Toto
L'argument i n'est pas utilisé dans le code. Cependant, sa simple présence, fait que la macro n'est plus affichée : puisqu'on est censé devoir lui fournir un argument, elle ne peut être appelée que par du code VBA, et donc n'apparaît plus.
Cependant, si une autre procédure l'appelle, tu auras une erreur de compilation (Argument non facultatif).
La solution est simple, et consiste à ajouter le mot "Optional" :
Sub Toto(Optional i) Msgbox "Macro masquée" End Toto
La macro Toto peut à nouveau être appelée à partir d'une autre procédure.
Salut ThiGautier
En tête de module tu saisis
Option private module et tes macros deviendront non visible par macro / macros
Salutations Titus
"ThiGautier" a écrit dans le message de news:
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs personnes (c'est un fichier qui comporte plusieurs macros avec déclenchements
automatiques ). Le gros soucis c'est que malgré les protections, l'utilisateur peut toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou visibles
de l'utilisateur ?
Merci d'avance pour le remède...
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Pascal Engelmajer
Salut, une piste ... Sub xxx() If TypeName(Application.Caller) = "Error" Then 'menu ou touche MsgBox "appel interdit" Exit Sub ElseIf Application.Caller = "Bouton 1" Then 'C'est OK ElseIf Application.Caller = "Bouton 2" Then MsgBox "vous ne pouvez pas utiliser ce bouton" End If End Sub
-- Amicalement. Pascal "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va." Sénèque. http://www.ilyapa.net/excel "ThiGautier" a écrit dans le message de news:
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs personnes (c'est un fichier qui comporte plusieurs macros avec déclenchements
automatiques ). Le gros soucis c'est que malgré les protections, l'utilisateur peut toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou visibles
de l'utilisateur ?
Merci d'avance pour le remède...
Salut,
une piste ...
Sub xxx()
If TypeName(Application.Caller) = "Error" Then 'menu ou touche
MsgBox "appel interdit"
Exit Sub
ElseIf Application.Caller = "Bouton 1" Then
'C'est OK
ElseIf Application.Caller = "Bouton 2" Then
MsgBox "vous ne pouvez pas utiliser ce bouton"
End If
End Sub
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"ThiGautier" <thigautier@aol.com> a écrit dans le message de news:
20040206155855.21837.00001559@mb-m14.aol.com...
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs
personnes (c'est un fichier qui comporte plusieurs macros avec
déclenchements
automatiques ).
Le gros soucis c'est que malgré les protections, l'utilisateur peut
toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou
visibles
Salut, une piste ... Sub xxx() If TypeName(Application.Caller) = "Error" Then 'menu ou touche MsgBox "appel interdit" Exit Sub ElseIf Application.Caller = "Bouton 1" Then 'C'est OK ElseIf Application.Caller = "Bouton 2" Then MsgBox "vous ne pouvez pas utiliser ce bouton" End If End Sub
-- Amicalement. Pascal "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va." Sénèque. http://www.ilyapa.net/excel "ThiGautier" a écrit dans le message de news:
Mon pb est le suivant:
J'essai de protéger au maximum un fichier qui est utilisé par plusieurs personnes (c'est un fichier qui comporte plusieurs macros avec déclenchements
automatiques ). Le gros soucis c'est que malgré les protections, l'utilisateur peut toujours
exécuter (au hasard) une macro en passant par OutilMacro.
Comment faut-il faire pour que les macros ne soient pas accessibles ou visibles