Avoir accès à certaines feuilles d'un fichier Excel en fonction d'un MDP demandé dès l'ouverture

Ruffenach

XLDnaute Nouveau
Bonjour,

Je suis actuellement en train d'essayer de trouver une solution à mon problème voilà :

J'ai un fichier Excel avec plusieurs feuilles (budget, commandes, contrats et onglet tampon) dont certaines personnes ne doivent pas avoir accès à la feuille "budget" en particulier ...
Le mieux serait que dès l'ouverture du fichier une feuille apparaisse demandant deux types d'identifiant
ex :
identifiant : Utilisateur1 Utilisateur2
MDP pomme poire

Et en fonction de ce qu'on rentre ça nous donne accès à soit toutes les feuilles pour l'utilisateur1 et toutes les feuilles sauf "budget" pour l'utilisateur2...

Je reconnais ne pas être à l'aise avec VBA donc si quelqu'un de plus expérimenté pourrait m'aider ça serait avec plaisir.
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Ruffenach, bonjour le forum,

En pièce jointe une proposition avec 3 essais puis fermeture... Full Comment.
Comme on ne peut pas masquer tous les onglets d'un classeur, l'onglet Feuil1 reste affiché en permanence. Tu pourras t'en servir comme onglet de présentation...
 

Pièces jointes

  • Ruffenach_ED_v01.xlsm
    22.1 KB · Affichages: 21

ChTi160

XLDnaute Barbatruc
Bonjour Ruffenach
Bonjour le Fil (Robert) , le Forum
Un exemple , je dois en avoir un autre ou c'est une liste des Feuilles accessibles , qui s'affiche ( il faut que je le retrouve Lol)
voir Identifiant et Mdp en feuille "Accueil"
sans fichier pas évident !
Combien de feuilles sont a traiter(max des feuilles accessibles) 7 max dans mon exemple .
Bonne journée
jean marie
 

Pièces jointes

  • GESTION Feuille Chti160.xlsm
    978.1 KB · Affichages: 17

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Pour répondre à ta question, Ruffenach, le code se trouve dans trois composants différents
Module 1 (déclaration publique de la variable NF)

VB:
Public NF As Byte 'déclare la variable NF (Nombre de Fois)
ThisWorkbook (codes d'ouverture et de fermeture du fichier)
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'à la fermeture du classeur
Dim I As Byte 'déclare la variable I (Incrément)

For I = 2 To Worksheets.Count 'boucle sur tous les onglets du classeur en partant du second
    Worksheets(I).Visible = xlSheetVeryHidden 'masque l'onglet
Next I 'prochain onglet de la boucle
Me.Save 'save le classeur
End Sub

Private Sub Workbook_Open() 'à l'ouverture du classeur
UserForm1.Show 'affiche l'UserForm 1
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'à la fermeture du classeur
Dim I As Byte 'déclare la variable I (Incrément)

For I = 2 To Worksheets.Count 'boucle sur tous les onglets du classeur en partant du second
    Worksheets(I).Visible = xlSheetVeryHidden 'masque l'onglet
Next I 'prochain onglet de la boucle
Me.Save 'save le classeur
End Sub

Private Sub Workbook_Open() 'à l'ouverture du classeur
UserForm1.Show 'affiche l'UserForm 1
End Sub
UserForm1 (la boîte de dialogue)
Code:
Private TEST As Boolean 'déclare la variable TEST

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
NF = NF + 1 'incrémente NF
If NF = 4 Then: ThisWorkbook.Close: End 'si NF=4, ferme le classeur et stoppe tout code
If NF > 1 Then MsgBox "Il ne vous reste que " & 4 - NF & " essai(s) !" 'si NF est supérieur à 1, message
End Sub

Private Sub CommandButton1_Click() 'bouton "Vaslider"
Dim O As Worksheet 'déclarela variable O (Onglet)

'si l'identifiant et le mot de passe concordent (Identifiant 1 / pomme)
If Me.TextBox1.Value = "Identifiant 1" And Me.TextBox2 = "pomme" Then
    For Each O In Sheets 'boucle sur tous les onglets du classeur
        O.Visible = True: TEST = True 'affiche l'onglet, définit la variable TEST
    Next O 'prochain onglet de la boucle
End If 'fin de la condition
'si l'identifiant et le mot de passe concordent (Identifiant 2 / poire)
If Me.TextBox1.Value = "Identifiant 2" And Me.TextBox2 = "poire" Then
    For Each O In Sheets 'boucle sur tous les onglets du classeur
        'si l'onglet ne se nome pas "Budget", affiche l'onglet, définit la vasriable TEST
        If Not O.Name = "Budget" Then O.Visible = True: TEST = True
    Next O 'prochain onglet de la boucle
End If 'fin de la condition
Unload Me 'vide et ferme l'UserForm
If TEST = False Then UserForm1.Show 'si TEST est [faux] affiche l'UserForm1
End Sub

Private Sub CommandButton2_Click()
Unload Me 'vide et ferme l'UserForm
End Sub
 

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400