Procedure Private ou Public

Le
Alf
Bonjour à tous,

Existe-t-il un moyen de déclarer une procédure à l'état=
Private suivant une condition (test sur une variable quelconque par ex) ?

Je développe un programme pour différents utilisateurs et je voud=
rai que certains aient accès à des procédures spécifiqu=
es et d’autres pas.

Merci pour votre aide
Alf
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
MichD
Le #26552749
Le 11/08/20 à 04:12, Alf a écrit :
Bonjour à tous,
Existe-t-il un moyen de déclarer une procédure à l'état Private suivant une condition (test sur une variable quelconque par ex) ?
Je développe un programme pour différents utilisateurs et je voudrai que certains aient accès à des procédures spécifiques et d’autres pas.
Merci pour votre aide
Alf


Bonjour,
Si le groupe n'est pas très gros, une suggestion. Tu fais un test sur
leur nom de l'usager.
'-------------------------------------
Sub test()
'Liste des "UserName" des usagers ayant droit à certaines macros seulement
Dim Arr(), Usager As String
Arr = Array("toto", "titi", "tutu", "michd") 'Tu peux en ajouter autant
que tu désires
'Tu testes si l'usager qui veut exécuter la macro fait partie des
personnes autorisées
Usager = LCase(Environ("UserName"))
If Not IsError(Application.Match(Usager, Arr, 0)) Then
'Exécution de la macro
MsgBox Usager
End If
End Sub
'-------------------------------------
MichD
Alf
Le #26552753
Le mardi 11 août 2020 10:12:46 UTC+2, Alf a écrit :
Bonjour à tous,
Existe-t-il un moyen de déclarer une procédure à l'ét at Private suivant une condition (test sur une variable quelconque par ex) ?
Je développe un programme pour différents utilisateurs et je vo udrai que certains aient accès à des procédures spécifi ques et d’autres pas.
Merci pour votre aide
Alf

Merci pour la réponse MichD.
En fait, je voulais que la macro n'apparaisse pas quand on tape Alt+F8, en fonction de l'utilisateur.
Mais ça ne doit pas être possible....
Dis-moi..
Merci
Alf
Geo
Le #26552756
En fait, je voulais que la macro n'apparaisse pas quand on tape Alt+F8, en
fonction de l'utilisateur. Mais ça ne doit pas être possible....

Avec la compilation conditionnelle peut-être.
Mais selon l'utilisateur ce n'est pas évident.
MichD
Le #26552758
Le 11/08/20 à 11:34, Alf a écrit :
Le mardi 11 août 2020 10:12:46 UTC+2, Alf a écrit :
Bonjour à tous,
Existe-t-il un moyen de déclarer une procédure à l'état Private suivant une condition (test sur une variable quelconque par ex) ?
Je développe un programme pour différents utilisateurs et je voudrai que certains aient accès à des procédures spécifiques et d’autres pas.
Merci pour votre aide
Alf

Merci pour la réponse MichD.
En fait, je voulais que la macro n'apparaisse pas quand on tape Alt+F8, en fonction de l'utilisateur.
Mais ça ne doit pas être possible....
Dis-moi..

Eh bien là, ça, c'est facile!
Exemple :
'---------------------------
Sub Test(Optional D As String)
End Sub
'-----------------------------
Il s'agit d'insérer dans la ligne de déclaration de la procédure un
paramètre "As Optional" comme dans mon exemple. La macro test n'a pas
besoin de tenir compte de ce paramètre "fantôme". Ainsi la procédure
"Test" n'apparaîtra pas dans la liste des macros, mais elle est disponible.
Dans la fenêtre Alt+F8, tu tapes le nom de la macro "Test" et tu appuies
sur le bouton exécuter.
MichD
MichD
Le #26552765
Si tu utilises mon approche, le code de la macro peut être dans
n'importe quel module et la ligne de code pour appeler la macro est
Call test est suffisante peu importe le module dans lequel tu te trouves.
Si tu utilises l'expression "Private", si tu veux appeler la macro d'un
autre module, tu dois alors utiliser :
Application.Run "Test"
Si tu appelles une macro située dans le même module, il n'y a pas de
différence Call Test est suffisant pour les 2 méthodes. Si tu utilises
seulement l'appel de la fenêtre des macros "alt+F11, il n'y a pas de
différences, non plus.
MichD
Michel__D
Le #26552797
Bonjour,
Le 11/08/2020 à 20:11, Alf a écrit :
Le mardi 11 août 2020 10:12:46 UTC+2, Alf a écrit :
Bonjour à tous,
Existe-t-il un moyen de déclarer une procédure à l'état Private suivant une condition (test sur une variable quelconque par ex) ?
Je développe un programme pour différents utilisateurs et je voudrai que certains aient accès à des procédures spécifiques et d’autres pas.
Merci pour votre aide
Alf

Merci à tous,
Une précision MichD, je ne vois pas la différence avec Private qui fait aussi disparaitre la macro quand on tape Alt+F8.
Par contre, que ce soit avec ta méthode ou avec Private, la macro est disponible. Ce que je ne savais pas.
Peut-être ta méthode présente-t-elle un autre avantage ?....

Relis la dernière réponse MichD qui te donne la différence.
(Private cela veut dire heu... ben Private et ici c'est par rapport au Module)
Poster une réponse
Anonyme