ok, je pensais que tu étais déjà bien au fait compte tenu de ce que tu avais écrit
j'ai fait une macro qui me permet de mettre des codes d'utilisateur afin que tout le monde ne puisse pas ouvrir tous les onglets sans le bon code. Jusque la, tout fonctionne.
bon, ben voici un exemple complet, avec au choix
| NOM | Mot de Passe |
| ADMIN | ADMIN |
| Greg | gregory |
| Eunice | eunice |
| Vic | victoria |
Dans ThisWorkBook :
Option Explicit
Private Sub Workbook_Open()
Dim f As Worksheet
For Each f In ThisWorkbook.Worksheets
If f.Name <> "Accueil" Then f.Visible = xlSheetVeryHidden
Next f
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim f As Worksheet
Sheets("Accueil").Visible = True
For Each f In ThisWorkbook.Worksheets
If f.Name <> "Accueil" Then f.Visible = xlSheetVeryHidden
Next f
End Sub
dans un module
Option Explicit
Sub ENTRER()
If [USER] = "" Then
MsgBox "Saisie du nom d'utilisateur obligatoire.", vbInformation
Exit Sub
End If
If [MdP] = "" Then
MsgBox "Saisie du mot de passe obligatoire.", vbInformation
Exit Sub
End If
If VerifMDP([USER], [MdP]) = False Then
MsgBox "Erreur Mot de passe et/ou utilisateur. Merci de saisir à nouveau.", vbInformation
[USER] = ""
[MdP] = ""
[USER].Select
Exit Sub
End If
[USER].Select
AfficheFeuilles [USER]
[USER] = ""
[MdP] = ""
End Sub
Function VerifMDP(Utilisateur As String, MdP As String) As Boolean
Dim rngTrouve As Range
VerifMDP = False
With Sheets("parametrage")
Set rngTrouve = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole)
If rngTrouve Is Nothing Then
VerifMDP = False
Else
If rngTrouve.Offset(0, 1) <> MdP Then
VerifMDP = False
Else
VerifMDP = True
End If
End If
End With
End Function
Sub AfficheFeuilles(Utilisateur As String)
Dim Col As Byte, i As Byte, Lig As Integer
With Sheets("parametrage") 'dans la feuille paramétrage
Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
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
Sheets("Accueil").Visible = False
End Sub