Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Procedure Private ou Public

6 réponses
Avatar
Alf
Bonjour =C3=A0 tous,

Existe-t-il un moyen de d=C3=A9clarer une proc=C3=A9dure =C3=A0 l'=C3=A9tat=
Private suivant une condition (test sur une variable quelconque par ex) ?

Je d=C3=A9veloppe un programme pour diff=C3=A9rents utilisateurs et je voud=
rai que certains aient acc=C3=A8s =C3=A0 des proc=C3=A9dures sp=C3=A9cifiqu=
es et d=E2=80=99autres pas.

Merci pour votre aide
Alf

6 réponses

Avatar
MichD
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
Avatar
Alf
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
Avatar
Geo
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.
Avatar
MichD
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
Avatar
MichD
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
Avatar
Michel__D
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)