Comment donner droit à l'utilisation de bouton de commande selon la personne ?

corvelc

XLDnaute Occasionnel
Bonjour,

Après recherches dans le forum, je ne trouve pas d’exemple pouvant répondre à mon besoin qui est le suivant :
J’ai un gros fichier Excel sur réseau qui permet à des utilisateurs d’avoir à disposition plusieurs tableaux dynamiques constitués à partir de nombreux onglets de données.
- Le premier onglet du dossier est une feuille de présentation avec nombreux boutons de commande permettant aux utilisateurs d’accéder directement à leurs rapports dynamiques par un simple « click ».
- Une autre partie des boutons de commandes doit permettre à un administrateur de lancer la mise à jour des onglets de données pour les Tbl Dyn, et c’est là que j’ai besoin d’aide.
- Je souhaite que seul l’administrateur puisse activer les boutons de mise à jour des données.

Je sais récupérer à l'ouverture du classeur le nom de l’utilisateur réseau via le ThisWorkbook de la façon suivante :
Contenu du ThisWorkbook :
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
-----------------------------------------------------------------------
Function Username()
Dim S As String, n As Long, Res As Long
S = String$(200, 0): n = 199: Res = GetUserName(S, n)
Username = UCase(Left(S, n - 1)) ‘ Userrname = nom utilisateur
End Function
-----------------------------------------------------------------
Private Sub Workbook_Open()
Call Username
End Sub

Le problème est que je n’arrive pas à conserver le contenu de la variable "Username", malgré l’avoir définie en « Public », pour pouvoir ensuite tester le contenu de la variable lors du « click » sur les boutons à protéger.

Si je passe par simple macro, je conserve bien la variable , mais pas quand je passe par le code d’un bouton commande type « Private Sub btn_Init_Data_Click() »
Etant trés loin d'être un pro VBA, Il y a certainement quelque chose que je ne maitrise pas encore en VBA.

Exemple du contenu d’un bouton commande :
Private Sub btn_Init_Data_Click()
'** utilisation du bouton initialisation données **
MsgBox (Username) ' pour récupéré le nom utilisateur
If Username = « toto» then
Call Initialisation_data ‘ appel des procédures mise à jour données
Else
Msgbox (« vous n’êtes pas autorisé »)
Exit sub
End if
End Sub

Merci d’avance pour l’aide apportée.
CC
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comment donner droit à l'utilisation de bouton de commande selon la personne ?

Bonjour Corvelc, bonjour le forum,

Dans un module (Module1) j'ai déclaré une variable publique :
Code:
Public un As String 'déclare la variable un (UserName)

j'ai rajouté dans le code de la Function Username en dernière ligne :

Code:
un = Username


Tu devrais pouvoir utiliser le bouton....
Code:
Private Sub btn_Init_Data_Click()
'** utilisation du bouton initialisation données **
If un = "toto" then 
     Call Initialisation_data ‘ appel des procédures mise à jour données
Else
     Msgbox (« vous n’êtes pas autorisé »)
     Exit sub
End if
End Sub
 

corvelc

XLDnaute Occasionnel
Re : Comment donner droit à l'utilisation de bouton de commande selon la personne ?

D'abord merci pour ton retour, la solution fonctionne avec le passage vers la variable "UN" ajouté dans Function Username.

Juste une question pour comprendre la logique VBA :
Pourquoi la variable "Username" ne retourne pas la valeur si utilisée dans d'autres macros, alors que si l'on affecte "Username" à une autre variable, son contenu est bien passé de macro en macro ?

Encore merci pour l'aide.

CC
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comment donner droit à l'utilisation de bouton de commande selon la personne ?

Bonjour Corvelc, bonjour le forum,

Je ne maîtrise absolument pas les fonctions mais peut-être cela vient du fait que Username est une fonction alors que un est une variable...
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote