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 ?

  • Initiateur de la discussion Initiateur de la discussion corvelc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…