Mot de passe feuille excel - VB/VBA/VBS - Programmation
Marsh Posté le 29-10-2009 à 18:36:31
Salut, via environ("USERNAME" ) qui te donnera le nom de login windows de l'utilisateur X , attention il existe en VBA un username qui ne donne que le nom donné lors de l'installation dans License d'utilisation accordée à . Via environ("USERNAME" ) tu peux donc sans mot de passe automatiser l'ouverture et n'afficher que la feuille concernant l'utilisateur X
Qqch comme cela , je n'ai plus de réseau de disponible pour le tester , donc à toi de l'adapter à ton contexte
|
Par la suite te renseigner sur CodeName dans le cas d'un changement malencontreux de nom d'onglet , cela te permet de ne pas retoucher au code VBA et d'affecter toujours la bonne feuille à l'utilisateur connecté
|
Pour cela voir http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm
http://www.cpearson.com/excel/codemods.htm
Marsh Posté le 29-10-2009 à 22:26:50
Merci Kiki de m'avoir répondu et proposé ce code.Je suis chez moi donc je ne peux l'essayer en réseau!!!! je te donne des nouvelle des demain. Par contre j ai oublié de mentionner un détail qui a une grande importance...outre le salarié qui doit avoir accès a son onglet, le responsable de service doit avoir accès a tout les onglets... j'espère que cela ne représente pas un grand chamboulement dans ton code... Merci d'avance
Marsh Posté le 29-10-2009 à 22:54:22
Je reviens avec une petite idée...dis moi ce que tu en pense kiki...On pourrait mettre un mot de passe à l'ouverture du classeur.Si le mot de passe est correct, on a accès à tous les onglets... sinon on applique ton code... c'est a dire qu'à ce moment là, on a accès uniquement à l'onglet portant le nom du salarié authentifié....
Marsh Posté le 30-10-2009 à 06:21:14
Salut, à tester
|
Marsh Posté le 30-10-2009 à 11:49:58
je te remercie kiki pour ta réactivité...Je viens d'essayer le code et des le premier case il me met "erreur de compilation variable inconnue" sur ShUser1. Je te joins ci après l'intégralité de mon code.
Sachant que mes onglets sont nommés Dupont...Durant...Robert...Villiers
Encore une fois merci
Option Explicit
Private Sub Workbook_Open()
Dim Ws As Worksheet, i As Long
Dim sUSer As String
sUSer = Environ("USERNAME" )
Application.ScreenUpdating = False
On Error Resume Next
For Each Ws In ThisWorkbook.Worksheets
Select Case sUSer
Case "GAP1"
DUPONT.Visible = xlSheetVisible
DURANT.Visible = xlSheetVisible
ROBERT.Visible = xlSheetVisible
VILLIERS.Visible = xlSheetVisible
Exit For
Case "GAP2"
DUPONT.Visible = xlSheetVisible
DURANT.Visible = xlSheetVisible
ROBERT.Visible = xlSheetVisible
VILLIERS.Visible = xlSheetVisible
Exit For
Case "INFO"
DUPONT.Visible = xlSheetVisible
DURANT.Visible = xlSheetVisible
ROBERT.Visible = xlSheetVisible
VILLIERS.Visible = xlSheetVisible
Exit For
Case "DUPONT"
DUPONT.Visible = xlSheetVisible
Case "DURANT"
DURANT.Visible = xlSheetVisible
Case "ROBERT"
ROBERT.Visible = xlSheetVisible
Case "VILLIERS"
VILLIERS.Visible = xlSheetVisible
End Select
Ws.Visible = xlSheetVeryHidden
Next Ws
Application.ScreenUpdating = True
End Sub
Marsh Posté le 30-10-2009 à 12:21:09
Salut,c'est normal voir plus haut http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm
http://www.cpearson.com/excel/codemods.htm
sinon voir snapshot sur http://cjoint.com/?kEmuTCePEe
Autrement dit aller sous VBE ( Alt+F11 )
Afficher la Fenêtre Prorpiétés ( F4 )
Sélectionner DUPONT ( nom d'onglet ) par exemple
Dans la fenêtre Propriétés sélectionner (Name) et remplacer
"FeuilXYZ" par ShUser1 etc
et je rajoute une couche http://cjoint.com/?kEmNY8MnGc
Marsh Posté le 09-11-2009 à 10:17:06
Cool ca marche Kiki... de retour de congés ce matin j'ai essayé et ca marche. Encore Merci!!!!!!! Je crois que je vais m y mettre serieux car on peut faire pas mal de choses!!!! Euh tout petit problème qd la sécurité macro est très elevée, il n'excute pas la macro et ouvre au nom de la dernière personne ayant eu accès!!! idem lorsque un nom de connexion ne possède pas d'onglet!!! Exemple si j'ouvre une connexion au nom de Durant et que Durant n'a pas d'onglet sur le fichier excel...il se connectera directement sur l'onglet du dernier ayant eu accès au fichier...Je ne sais pas tout ça est clair pour toi... Merci encore une fois
Marsh Posté le 09-11-2009 à 18:03:44
Salut, je te propose cela : l'ajout d'une fonction qui vérifie l'existence de l'onglet et qui en cas de non existence de cet onglet avertit l'utilisateur et ferme l'application sans rien sauver
http://cjoint.com/?ljsGNROUWt
Juste une remarque : un classeur Excel de n feuilles doit en avoir au moins une de visible
Pour le niveau de sécurité il te faudra créer un certificat : voir http://vb.developpez.com/faqvba/?page=2#selfcert
http://www.developpez.net/forums/d [...] rtificats/
Marsh Posté le 10-11-2009 à 09:35:30
Ok. J'essaie et je te tiens au courant... Merci...Merci...Merci!!!!!!
Marsh Posté le 10-11-2009 à 10:37:04
Kiki...re... je viens d'essayer avec la fonction qui vérifie l'existence de l'onglet...à priori, il exécute le if et me sort de l'application à tous les coups même si l'onglet existe.
Marsh Posté le 10-11-2009 à 17:42:00
Re, à tester http://cjoint.com/?lkrPfaiC12
Autant pour moi, trop pressé, il faut tenir compte des administrateurs qui eux n'ont pas d'onglets mais doivent avoir accès à ceux des utilisateurs n'est ce pas ?
|
Marsh Posté le 08-12-2009 à 11:25:57
Je reviens ici pour te dire Kiki que c'est bon...Ça marche. Désole de ne pas avoir donné de nouvelles plus tôt mais par manque de temps, je n'ai pas pu tester avant cette semaine. Encore merci pour ton aide très précieuse.
Marsh Posté le 09-12-2009 à 10:53:13
Bonjour
Je n'ai pas tout regardé du développement qui me semble très intéressant, mais je voudrais soumettre une suggestion, ce serait de mettre en début de macro la ligne suivante, qui a pour effet d'empêcher l'interruption de la macro, volontaire ou non, et donc l'ouverture du module avec apparition du code.
Application.EnableCancelKey = xlDisabled
Qu'en penses-tu, Kiki?
Cordialement
Marsh Posté le 09-12-2009 à 11:07:24
Précision: Pour pouvoir observer et corriger un éventuel dysfonctionnement de la macro, cette formule n'est à activer que elle fonctionne parfaitement.
Marsh Posté le 29-10-2009 à 12:19:42
Bonjour,
est ce qu'il est possible de soumettre l'ouverture d'une feuille excel a une identification et un mot de passe? je m'explique, j'ai une application excel au sein de ma boite en réseau local. Cet application contient une feuille par salarié.(Total 15 feuilles). Je souhaiterais que chaque salarié ait accès uniquement à la feuille portant son nom et ceci par mot de passe.Les autres feuilles lui étant masquées. Étant complément novice en vba, est ce que vous pouvez me donner un coup de main.
Merci d'avance
---------------
jcds