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
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