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

gérer les droits d'accès sur les colonnes d'une feuille excel

  • Initiateur de la discussion Initiateur de la discussion USER2112
  • 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 !

USER2112

XLDnaute Nouveau
bonjour à tous,
comment puise gérer les accès utilisateurs sur un fichier excel, enfaite j'ai un tableau sur excel partager entre 4 personnes, chaque utilisateur manipule sur 1 seule colonne du fichier.
j'aimerais bien que chaque utilisateur ne peut modifier que la colonne qui lui dédié.
par exemple user 1 peut modifier/supprimer que les cellules de la colonne A,et user 2 peut modifier/supprimer que les cellules de la colonne c.
merci d'avance
 
Bonjour User, Maître Jacques, bonjour le forum,

Une autre approche avec le verrouillage des cellules et deux événementielles du composant ThisWorkbook :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'à la fermeture du classeur
ThisWorkbook.Worksheets("Feuil1").Unprotect "toto" 'déprotège l'onglet "Feuil1" avec un mot de passe générique (à modifier à ta convenance)
ThisWorkbook.Worksheets("Feuil1").Cells.Locked = True 'verrouille toutes les cellules de l'onglet
ThisWorkbook.Worksheets("Feuil1").Protect "toto" 'protège l'onglet "Feuil1"
ThisWorkbook.Save 'sauve le classeur
End Sub

VB:
Private Sub Workbook_Open() 'à l'ouverture du classeur
Dim MDP(1 To 4) As String 'déclare la tableau de 4 variables MDP (Mot de Passe)
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Dim I As Byte 'déclare la variable I (Incrément)

MDP(1) = "Utilisateur1" 'définit le mot de passe de l'utilisateur 1 (à modifier à ta convenance)
MDP(2) = "Utilisateur2" 'définit le mot de passe de l'utilisateur 2 (à modifier à ta convenance)
MDP(3) = "Utilisateur3" 'définit le mot de passe de l'utilisateur 3 (à modifier à ta convenance)
MDP(4) = "Utilisateur4" 'définit le mot de passe de l'utilisateur 4 (à modifier à ta convenance)
BE = Application.InputBox("Tapez votre mot de passe !", "MOT DE PASSE", Type:=2) 'définit la boîte d'entrée BE
If BE = False Or BE = "" Then Exit Sub 'si BE est non renseignée ou si bouton [Annuler], sort de la procédure
For I = 1 To 4 'boucle sur les 4 mots de passe
    If BE = MDP(I) Then 'condition : si BE correspond au mot de passe de la boucle
        ThisWorkbook.Worksheets("Feuil1").Unprotect "toto" 'déprotège l'onglet
        Worksheets("Feuil1").Columns(I).Cells.Locked = False 'déverrouille les cellules de la colonne I (ici il faudra faire correcpondre avec la colonne désirée, j'ai fait simple...)
        ThisWorkbook.Worksheets("Feuil1").Protect "toto" 'verrouille l'onglet
        Worksheets("Feuil1").Activate 'sélectionne l'onglet
        Worksheets("Feuil1").Cells(1, I).Select 'sélectionne la premère cellule de la colonne libérée
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
Next I 'prochain mot de passe de la boucle
End Sub
 
bonjour,
désoler pour le dérangement, je suis pas pro.
j'ai essayé avec le code VBA mais pas de résultat.
ci-joint un fichier nommé test, si c'est possible merci de m'expliquer comment puisse donnés a user1 seulement le droit de modifier les données de la colonne A,user2 sur la colonne B, user3 le colonne C...
merci beaucoup
 

Pièces jointes

Bonjour le fil, bonjour le forum,

Le code proposé était à placer dans le composant du classeur : ThisWorkbook, comme je l'avais précisé et toi, tu l'as placé dans le composant de l'onglet : Feuil1(Feuil1). En pièce jointe tout est bien mis en place et ça fonctionne...
 

Pièces jointes

Bonjour,

Une autre version avec Scrollarea et formulaire mot de passe

VB:
Private Sub B_ok_Click()
  If Me.motpasse <> "" Then
     For i = 1 To Range("MotPasse").Count
      If UCase(Me.motpasse) = UCase(Range("motpasse")(i)) Then
         temp = Range("champ")(i)
         On Error Resume Next
         Sheets(1).ScrollArea = temp
         If Err <> 0 Then MsgBox "erreur"
      End If
    Next i
  End If
  Unload Me
End Sub

L'administrateur définit les mots de passe dans un onglet Admin.

Code:
Sub AfficheTousOnglets()
 rep = InputBox("mot de passe Admin?")
 If rep = "jacques" Then
   For Each s In ActiveWorkbook.Sheets
     s.Visible = True
   Next s
 End If
 Sheets(1).ScrollArea = ""

Boisgontier
 

Pièces jointes

Dernière édition:
Bonsoir Boisgontier

Apparemment possibilité de modifier les plages verrouillés uniquement en faisant appel à l' InputBox et en le refermant par "OK ou annuler" sans mettre le mot de passe

Slts
 

Pièces jointes

Dernière édition:
Bonjour boisgontier

Oui Ok.... votre principe fonctionne si vous êtes des personnes clean qui cherche pas plus loin, mais si une personne un peu scrupuleuse clique directement sur la croix rouge pour fermer la demande de mot de passe, il n'a aucun problème d'ouvrir par le biais de la commande d'accéder à l' InputBox et en le refermant par "OK ou annuler" sans mettre le mot de passe pour accéder aux colonnes interdites.

Slts
 
Bonjour

Juste pour infos
La protection sera inefficace si
  1. le classeur est ouvert sans activer les macros
  2. le classeur est ouvert dans Libre Office
Tant que le classeur ne contient pas de données sensibles, on fera confiance à cette "protection" 😉.
 
- 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

Réponses
30
Affichages
477
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…