3 sous procédures :
Vérification du mot de passe
Cette fonction renvoie True si OK, False dans le cas contraire
En documentant, je lm'aperçois qu'on aurait pu l'écrire avec moins de lignes redondantes !
Function VerifMDP(Utilisateur As String, MdP As String) As Boolean
' rngTrouve donnera la cellule où est recherchée le User
Dim rngTrouve As Range
' on met False a priori
VerifMDP = False
With Sheets("Admin")
' dans la feuille Admin, on cherche en colonne 1 le User
Set rngTrouve = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole)
' si pas trouvé ...
If rngTrouve Is Nothing Then
VerifMDP = False
' si trouvé ...
Else
' on compare alors le MdP au contenu de la cellule droite (offset(0,1)) du User
If rngTrouve.Offset(0, 1) <> MdP Then
' si pas ok
VerifMDP = False
Else
' si ok
VerifMDP = True
End If
End If
End With
End Function
Changement du MdP
Sub ChangerMDP(Utilisateur As String, NewMdP As String)
Dim rngTrouve As Range
With Sheets("Admin")
' on cherche dans la feuille Admin, colonne 1, le nom du User
Set rngTrouve = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole)
If rngTrouve Is Nothing Then
' si pas trouvé, ici recherche superflue (normalement déjà testé auparavant)
Exit Sub
Else
' on change la valeur à droite du User
rngTrouve.Offset(0, 1).Value = NewMdP
End If
End With
End Sub
Affichage des feuilles adhoc
Sub AfficheFeuilles(Utilisateur As String)
Dim Col As Byte, i As Byte, Lig As Integer
With Sheets("Admin") 'dans la feuille paramétrage
Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column 'dernière colonne par balayage à gauche depuis l'extrémité de la feuille
Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row 'ligne correspondant au User par recherche dans la colonne 1
For i = 3 To Col
If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
Sheets(.Cells(1, i).Value).Visible = True 'on affiche la feuille
Else
Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden 'sinon on la masque
End If
Next i
End With
' on masque la feuille Start
Sheets("Start").Visible = False
End Sub