Macro : Afficher des onglets en fonction du code saisie (pas d'affichage)

Bonjour à toutes et à tous,

Je me permets de nouveau de vous écrire pour être éclairé !

Explication du problème :

"Alors, j'ai une macro qui est censé maquer tous les onglets et m'afficher un onglet (User 1, User 2, User 3,... ) en fonction du code saisie par l'utilisateur à l'ouverture du ficher Excel (macro ci-dessous), toutefois, quand je saisie mon code, rien ne se passe, il accepte le code mais n'affiche pas mon onglet"

Pourriez vous me dire qu'est ce que je fais mal ? Je vous remercie par avance pour votre retour !

Pour info : j'ai récupéré cette macro sur le web et je l'ai adapté à mon cas

Private Sub Workbook_Open()

'Déclaration des variables
Dim i As Integer
Dim MonPassword As Variant

'Afficher la feuille HOME dès l'ouverture du classeur
Worksheets("HOME").Activate

'Masquer les autres feuilles

For i = 1 To Sheets.Count - 1
Sheets("User " & i).Visible = False
Next i

'On va récupérer le code ou Mdp dans une boite de type InputBox

monpasswoerd = InputBox("Veuillez entrer votre mot de passe pour accéder à votre feuille :", "Identification")

'On va réaliser les différents tests

If MonPassword = "1234" Then

Sheets("User 1").Visible = True
Worksheets("User 1").Select
Range("A1").Select

End If

If MonPassword = "12345" Then

Sheets("User 2").Visible = True
Worksheets("User 1").Select
Range("A1").Select

End If

If MonPassword = "123456" Then

Sheets("User 3").Visible = True
Worksheets("User 1").Select
Range("A1").Select

End If

'Ouvrir toutes les feuilles si mot de passe admin

If MonPassword = "0000" Then

For i = 1 To Sheets.Count
Sheets("User " & i).Visible = True
Next i
End If

End Sub

Edit modo : merci de mettre le code entre balises grâce au bouton </>

Bonjour,

Vous auriez mis "Option Explicit" en début de module, vous auriez vu qu'il y avait une erreur de frappe
"monpasswoerd" au lieu de "MonPassword"

Ceci dit 2 choses :

- inscrire en dur les mots de passe pas forcément une bonne idée

- si vous voulez le faire ainsi, le code peut être optimisé comme ceci

Private Sub Workbook_Open()
  'Déclaration des variables
  Dim Ind As Integer
  Dim MonPassword As Variant
  Dim TbMdP() As String
  ' Tableau des MdP
  TbMdP = Split("1234,12345,123456", ",")
  'Afficher la feuille HOME dès l'ouverture du classeur
  Worksheets("HOME").Activate
  'Masquer les autres feuilles
  For Ind = 1 To Sheets.Count - 1
    Sheets("User " & Ind).Visible = xlSheetHidden
  Next Ind
  'On va récupérer le code ou Mdp dans une boite de type InputBox
  MonPassword = InputBox("Veuillez entrer votre mot de passe pour accéder à votre feuille :", "Identification")
  'Ouvrir toutes les feuilles si mot de passe admin
  If MonPassword = "0000" Then
    For Ind = 1 To Sheets.Count
      Sheets("User " & Ind).Visible = True
    Next Ind
    Exit Sub
  End If
  ' Tester chaque mot de passe enregistré
  For Ind = 0 To UBound(TbMdP)
    If MonPassword = TbMdP(Ind) Then
      With Sheets("User " & 1 + Ind)
        .Visible = xlSheetVisible
        .Select
        .Range("A1").Select
      End With
      ' Sortir de la procédure
      Exit Sub
    End If
  Next Ind
End Sub

@+

Merci Beaucoup Bruno,

Effectivement votre proposition est beaucoup mieux et j'ai le résultat souhaité

Bonjour Bruno, (ou la communauté)

Le fichier marche correctement sur mon poste, mais chez les destinataire (soit accès sur réseau soit par mail) ça ouvre d'office tous les onglets et puis dès qu'il clique sur "Activer le contenu" c'est là ou il les masque et demande le code,

Avez vous une idée sur la résolution de ce souci ?

Vous remerciant,

Bonjour RaNouh,

C'est le problème avec les sécurités Microsoft

Ce qu'il faut, c'est masquer les onglets à la fermeture du classeur,
comme ça quand tu enverras le fichier, les onglets seront déjà masqués

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim Ind as Integer
  'Afficher la feuille HOME dès l'ouverture du classeur
  Worksheets("HOME").Activate
  'Masquer les autres feuilles
  For Ind = 1 To Sheets.Count - 1
    Sheets("User " & Ind).Visible = xlSheetVeryHidden
  Next Ind
End Sub

Private Sub Workbook_Open()
  'Déclaration des variables
  Dim Ind As Integer
  Dim MonPassword As Variant
  Dim TbMdP() As String
  ' Tableau des MdP
  TbMdP = Split("1234,12345,123456", ",")
  'On va récupérer le code ou Mdp dans une boite de type InputBox
  MonPassword = InputBox("Veuillez entrer votre mot de passe pour accéder à votre feuille :", "Identification")
  'Ouvrir toutes les feuilles si mot de passe admin
  If MonPassword = "0000" Then
    For Ind = 1 To Sheets.Count - 1
      Sheets("User " & Ind).Visible = xlSheetVisible
    Next Ind
    Exit Sub
  End If
  ' Tester chaque mot de passe enregistré
  For Ind = 0 To UBound(TbMdP)
    If MonPassword = TbMdP(Ind) Then
      With Sheets("User " & 1 + Ind)
        .Visible = xlSheetVisible
        .Select
        .Range("A1").Select
      End With
      ' Sortir de la procédure
      Exit Sub
    End If
  Next Ind
End Sub

@+

Rechercher des sujets similaires à "macro afficher onglets fonction code saisie pas affichage"