Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…