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
| Option Explicit
'J'ai fait le choix d'une fonction car il ne s'agit que de savoir si le mot de passe correspond à l'utilisateur.
'par conséquent, il nous faut une procédure qui compare les 2 et qui renvoie VRAI ou FAUX (d'où la fonction déclarée As Boolean).
'ICI : (Utilisateur As String, MdP As String)sont des paramètres envoyés lors du clic sur le bouton
Function VerifMDP(ByVal Utilisateur As String, ByVal MdP As String) As Boolean
Dim rngTrouve As Range
VerifMDP = False 'par défaut, renvoie FAUX
With Sheets("Paramétrage") 'dans la feuille Paramétrage
'cherche, colonne A, le nom d'utilisateur saisi
Set rngTrouve = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole)
If rngTrouve Is Nothing Then 'si il ne trouve pas
VerifMDP = False 'la fonction renvoie faux
Else 's'il le trouve
'vérifie que le mot saisi feuille Paramétrage colonne B est identique
'au mot de passe saisi dans l'USF
If rngTrouve.Offset(0, 1) <> MdP Then
VerifMDP = False 'si FAUX
Else
VerifMDP = True 'si VRAI
End If
End If
End With
End Function
Sub AfficheFeuilles(ByVal Utilisateur As String)
Dim Col As Integer, i As Integer
Dim Feuille As String
Dim Lig As Integer
With Sheets("Paramétrage") 'dans la feuille Paramétrage
'comme on va boucler de la colonne 3 à la dernière colonne, on stocke le n° de la dernière colonne :
Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
For i = 3 To Col
Feuille = .Cells(1, i).Value
If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
Sheets(Feuille).Visible = True 'on affiche la feuille
Else
Sheets(Feuille).Visible = xlSheetVeryHidden 'sinon on la masque
End If
Next i
End With
End Sub |
Partager