Gestion des accès des feuilles d'un classeur
Bonsoir à tous
J'ai un userform à patir duquel je souhaite que lorsque les conditions souhaitées pour un utilisateur sont réunies, que les feuilles devant s'afficher s'affichent et les autres restent masquées.
Les conditions à prendre en compte sont :
- le code utilisateur à saisir dans le textbox5. la liste des utilisateurs se trouve dans la feuille ADMIN!B4:B23
- le mot de passe à saisir dans le textbox6. le mot de passe de chaque utilisateur figure dans la feuille ADMIN!C4:C23
Cela signifie que lorsque le code utilisateur et le mot de passe sont corrects les actions suivantes doivent se produire :
- fermeture du userform
- affichage des feuilles autorisées sachant les feuilles autorisées pour un utilisateur sont celles comportant "x".
J'ai bidouillé le code ci-dessous mais il ne fonctionne pas et une erreur est signalée dans cette partie du code :
CODE: TOUT SÉLECTIONNER
Code:
If Sheets("ADMIN").Cells(Ligne, i) = "x" Then
Voici le l'intégralité du code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
Sub Gestion_Feuille()
Sheets("ADMIN").Visible = True
Sheets("ADMIN").Select
Dim i As Long, Ligne As Long, nbColonnes As Long, nbLignes As Long
nbLignes = Sheets("ADMIN").Cells(Rows.Count, "B").End(xlUp).Row
nbColonnes = Sheets("ADMIN").Cells(3, Columns.Count).End(xlToLeft).Column
'Trouver la ligne du User
For i = 4 To nbLignes
If Sheets("ADMIN").Range("B" & i) = UCase(Range("motpasse")(i)) Then
Ligne = i
Exit For
End If
Next
'Parcourir ses feuilles permises
For i = 4 To nbColonnes
If Sheets("ADMIN").Cells(Ligne, i) = "x" Then
Sheets(Cells(3, i).Value).Visible = xlSheetVisible
Else
Sheets(Cells(3, i).Value).Visible = xlSheetVeryHidden
End If
Next
End Sub
Le code du userform est le suivant:
Private Sub CommandButton1_Click()
Dim i
Dim t
For i = 1 To Range("MotPasse").Count
For t = 1 To Range("motpasse2").Count
If TextBox5 = UCase(Range("motpasse")(i)) And TextBox6 = UCase(Range("motpasse2")(t)) Then
Unload Me
Call Gestion_Feuille
End If
Exit Sub
Next
Next
TextBox2.Value = TextBox2.Value + 1
If TextBox2.Value = 3 Then
Unload Me
If Workbooks.Count > 1 Then
ActiveWorkbook.Save
ActiveWorkbook.Close
Else
Application.Quit
End If
Else
TextBox5 = ""
TextBox6 = ""
TextBox5.SetFocus
TextBox6.SetFocus
End If
End Sub |
Comment fusionner les 2 codes (le code du module et celui du userform) pour aboutir au même résultat.
Je reste disponible pour plus d'éclaircissement