Gestion des droits utilisateurs sur excel

davidm

XLDnaute Nouveau
Bonjour,

J'aimerais savoir si il est possible de gérer des droits d'utilisateur sur excel, par exemple j'aimerais que tous les onglets soit autoriser en lecture et écriture
a part en feuil2 ou seulement certaines plages sont autorisées en fonction de l'utilisateur.

Les logins et mot de passe sont demandées dans un userform ou encore mieux mais je ne sais pas si c'est possible en récupérant le login de l'utilisateur windows.


Merci de votre aide

Davidm
 

Pièces jointes

  • essai identifiant.xls
    30.5 KB · Affichages: 396

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Gestion des droits utilisateurs sur excel

Bonjour,

Il n'est pas nécessaire de s'authentifier. On peut s'appuyer sur les noms d'utilisateurs réseau.

Chaque utilisateur ne peut modifier que le champ qui correspond à son nom:

Créer des noms de champ qui correspondent aux noms d'utilisateur réseau. Scrollarea=champ restreint l'accés au champ prévu pour chaque utilisateur.

Code:
Private Sub Workbook_Open()
  On Error Resume Next
  Sheets(1).ScrollArea = Environ("username")
  If Err <> 0 Then Sheets(1).ScrollArea = "invite"
End Sub


JB
Formation Excel VBA JB
 

Pièces jointes

  • ProtectionMultiChampsScrollAreax.xls
    34.5 KB · Affichages: 444

drone

XLDnaute Nouveau
Re : Gestion des droits utilisateurs sur excel

Bonjour,

Il n'est pas nécessaire de s'authentifier. On peut s'appuyer sur les noms d'utilisateurs réseau.

Chaque utilisateur ne peut modifier que le champ qui correspond à son nom:

Créer des noms de champ qui correspondent aux noms d'utilisateur réseau. Scrollarea=champ restreint l'accés au champ prévu pour chaque utilisateur.

Code:
Private Sub Workbook_Open()
  On Error Resume Next
  Sheets(1).ScrollArea = Environ("username")
  If Err <> 0 Then Sheets(1).ScrollArea = "invite"
End Sub


JB
Formation Excel VBA JB

Bonjour à tous,
j'ai regardé le fichier et dans VBE on vois qu'il contient d'autres feuilles mais lorsqu'on va dans excel, il n'est pas possible (en tout cas pour moi) d'afficher ces feuilles. Comment est-ce possible?
 

vynmarius

XLDnaute Nouveau
Re : Gestion des droits utilisateurs sur excel

bonjour,
je remonte ce topic car j'ai un besoin lié au même type de tableau.

si on reprend le fichier "ProtectionMultiChampsScrollAreax.xls‎", mon tableau fonction impecable.
maintenant je voudrais définir une zone sur les 3 premières feuilles, et donc la définir de la même manière pour ne donner accès qu'a cette zone. je rencontre un problème. en reprennant le fichier je vais tenter d'illustrer mon propos.
j'ai en plus inclus une obligation d'activation des macros pour sécuriser le fichier (je n'ai pas mis le mdp juste verrouillé pour laisser la possibilité de dévérouiller aux testeurs).

est-il possible d'utiliser une fonction du style "Sheets(activeshhets.name).ScrollArea" pour gérer le changement de page?

je vous laisse regarder ! ;)


je viens de trouver ce sujet : https://www.excel-downloads.com/threads/droits-de-modification-sur-une-plage-de-cellule.150057/
je vais essayer de recouper les infos, et ej reviens vers vous en cas de pb :)


je rencontre un message d'erreur sur le code suivant:
Code:
Private Sub Annule()
With Application
  .Undo 'annule la modification
  .EnableEvents = False
  .EnableEvents = True
  .OnRepeat "", ""
End With
End
End Sub
le .undo me marque un message d'erreur sur le fichier du précédent lien ( "accès multi sheets .xls" j'ai juste renomé le fichier ponct(6) du lien précédent), celà correspond à la fonction que j'utilise pour éviter les modifs:
Code:
  On Error Resume Next
  Sheets(1).ScrollArea = Environ("username")
  If Err <> 0 Then Sheets(1).ScrollArea = "invite"

ensuite il faut que je me penche un peu plus sur le code suivant, il appelle la fonction sub annule, mais comme elle plante chez moi, il faut que je remix tout ça chez moi ce soir, en attendant si quelqu'un a une idée elle est la bienvenue ;) :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim administrateur
administrateur = Array("Dell", "titi", "toto", "tutu")
If IsNumeric(Application.Match(Environ("username"), administrateur, 0)) Then Exit Sub
Me.Names.Add "Utilisateur", Environ("username")
If Sh.Name = "Accueil" Then Exit Sub 'au cas où cette feuille existe
If Source.Areas.Count > 1 Or Source.Column < 5 _
  Or Source.Column + Source.Columns.Count > 8 Then Annule
Dim plage As Range
Set plage = Source.Columns(1).Offset(, 3 - Source.Column) 'plage correspondante en colonne C
If Source.Rows.Count > Application.CountIf(plage, Environ("username")) Then Annule
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Source As Range)
Dim administrateur
administrateur = Array("Dell", "titi", "toto", "tutu")
If IsNumeric(Application.Match(Environ("username"), administrateur, 0)) Then Exit Sub
Me.Names.Add "Utilisateur", Environ("username")
If Sh.Name = "Accueil" Or Source.Address = "$H$1" Then Exit Sub
Dim cel As Range, plage As Range
For Each cel In Sh.Range("C2", Sh.Range("C65536").End(xlUp))
  If cel = Environ("username") Then Set plage = Union(cel, IIf(plage Is Nothing, cel, plage))
Next
If plage Is Nothing Then Sh.Range("H1").Select: Exit Sub
Set plage = Intersect(Source, plage.EntireRow, Sh.Range("E:G"))
If plage Is Nothing Then Sh.Range("H1").Select: Exit Sub
Application.EnableEvents = False
plage.Select
Application.EnableEvents = True
End Sub
 

Pièces jointes

  • multisheets ProtectionMultiChampsScrollAreax.xls
    56.5 KB · Affichages: 248
  • accès multi sheets .xls
    57 KB · Affichages: 316
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 079
Messages
2 085 129
Membres
102 788
dernier inscrit
Remy003