MdP pour afficher onglet

toune21

XLDnaute Impliqué
Bonsoir à tous,

Je vous joints un petit fichier.

Je souhaiterais associé un userform à un bouton avec un mot de passe pour afficher les onglets de mon classeur.

UserForm : onglets à afficher.
'fichevierge' 'Param' etc...
Et quand on clic sur l'onglet que l'on désire, inscrire un Login et un Mot de Passe

J'ai préparé l'UserForm : Onglets à afficher, mais je n'ai pas le code

Est ce possible,

Amicalement,
 

Pièces jointes

  • EssaiOnglets.xls
    191.5 KB · Affichages: 69

Gdal

XLDnaute Nouveau
Re : MdP pour afficher onglet

Bonjour,

Un début de solution

Protéger / Déprotéger un classeur
Code:
Sub ProtegerClasseur()
'
' PROTEGER LE CLASSEUR
'

    Dim sReponse As String
    sReponse = InputBox("Mot de passe")

    ActiveWorkbook.Protect Password:=sReponse , _
                            Structure:=True, _
                            Windows:=False
    
End Sub

Code:
Sub DeprotegerClasseur()
'
' DEPROTEGER LE CLASSEUR
'

    Dim sReponse As String
    sReponse = InputBox("Mot de passe")

    ActiveWorkbook.Unprotect Password:=strMotDePasse
    
End Sub

Protéger / Déprotéger une feuille
Code:
Sub ProtegerFeuille(wsAProteger As Worksheet, objTypeSelection As XlEnableSelection, strMotDePasse As String, _
                    Optional bolObjetsDessin As Boolean, Optional bolContenu As Boolean, Optional bolUserInterfaceOnly As Boolean, _
                    Optional bolAutoriserCellulesMiseEnForme As Boolean, Optional bolAutoriserColonnesMiseEnForme As Boolean, Optional bolAutoriserLignesMiseEnForme As Boolean, _
                    Optional bolAutoriserInsertionColonnes As Boolean, Optional bolAutoriserInsertionLignes As Boolean, Optional bolAutoriserInsertionLiensHypertexte As Boolean, _
                    Optional bolAutoriserSuppressionColonnes As Boolean, Optional bolAutoriserSuppressionLignes As Boolean, _
                    Optional bolAutoriserTri As Boolean, Optional bolAutoriserFiltrage As Boolean, Optional bolAutoriserTableauxCroisésDynamiques As Boolean)
'
' PROTEGER FEUILLE
'
' wsAProteger [WORKBOOK] = Feuille à protéger
' objTypeSelection [LIST] =  xlNoSelection empêche toute sélection dans la feuille
'                            xlUnlockedCells ne permet que la sélection des cellules dont la propriété Locked est False
'                            xlNoRestrictions permet la sélection de n'importe quelle cellule
' strMotDePasse [STRING] = Mot de passe de la feuille
' bolObjetsDessin [BOOLEAN] = Protéger les formes.
' bolContenu [BOOLEAN] =  Protéger le contenu. Protetction du graphique entier, Protetction des cellules verrouillées.
' bolUserInterfaceOnly [BOOLEAN] = Protéger l'interface utilisateur, mais pas les macros. Si cet argument est omis, la protection s'applique à la fois aux macros et à l'interface utilisateur' bolAutoriserCellulesMiseEnForme [BOOLEAN] = Permet à l'utilisateur de mettre en forme n'importe quelle cellule.
' bolAutoriserColonnesMiseEnForme [BOOLEAN] = Permet à l'utilisateur de mettre en forme n'importe quelle colonne.
' bolAutoriserLignesMiseEnForme [BOOLEAN] = Permet à l'utilisateur de mettre en forme n'importe quelle ligne.
' bolAutoriserInsertionColonnes [BOOLEAN] = Permet à l'utilisateur d'insérer des colonnes.
' bolAutoriserInsertionLignes [BOOLEAN] = Permet à l'utilisateur d'insérer des lignes.
' bolAutoriserInsertionLiensHypertexte [BOOLEAN] = Permet à l'utilisateur d'insérer des liens hypertexte.
' bolAutoriserSuppressionColonnes [BOOLEAN] = Permet à l'utilisateur de supprimer des colonnes.
' bolAutoriserSuppressionLignes [BOOLEAN] = Permet à l'utilisateur de supprimer des lignes.
' bolAutoriserTri [BOOLEAN] = Permet à l'utilisateur d'effectuer un tri. Toutes les cellules de la plage à trier doivent être déverrouillées ou ne plus être protégées.
' bolAutoriserFiltrage [BOOLEAN] = Permet à l'utilisateur de définir des filtres. Les utilisateurs peuvent changer des critères de filtre, mais ils ne peuvent ni activer, ni désactiver un filtre automatique.
' bolAutoriserTableauxCroisésDynamiques [BOOLEAN] = Permet à l'utilisateur d'utiliser des rapports de tableau croisé dynamique dans la feuille de calcul protégée.
'
' RETOUR : [--],
'

    wsAProteger.EnableSelection = objTypeSelection
    
    wsAProteger.Protect Password:=strMotDePasse, _
                         DrawingObjects:=bolObjetsDessin, _
                         Contents:=bolContenu, _
                         UserInterfaceOnly:=bolUserInterfaceOnly, _
                         AllowFormattingCells:=bolAutoriserCellulesMiseEnForme, _
                         AllowFormattingColumns:=bolAutoriserColonnesMiseEnForme, _
                         AllowFormattingRows:=bolAutoriserLignesMiseEnForme, _
                         AllowInsertingColumns:=bolAutoriserInsertionColonnes, _
                         AllowInsertingRows:=bolAutoriserInsertionLignes, _
                         AllowInsertingHyperlinks:=bolAutoriserInsertionLiensHypertexte, _
                         AllowDeletingColumns:=bolAutoriserSuppressionColonnes, _
                         AllowDeletingRows:=bolAutoriserSuppressionLignes, _
                         AllowSorting:=bolAutoriserTri, _
                         AllowFiltering:=bolAutoriserFiltrage, _
                         AllowUsingPivotTables:=bolAutoriserTableauxCroisésDynamiques
    
End Sub

Code:
Sub DeProtegerFeuille(wsAProteger As Worksheet, strMotDePasse As String)
'
' DEPROTEGER FEUILLE
'
' wsAProteger [WORKBOOK] = Feuille à protéger
' strMotDePasse [STRING] = Mot de passe de la feuille

    wsAProteger.Unprotect Password:=strMotDePasse

End Sub

Ouverture du classeur
Code:
Private Sub Workbook_Open()

    '> Masquer l'avertissement "Activer les macros"
    ' Désactiver la protection du classeur
    Call DeprotegerClasseur

    ' Désactiver le rafraîchissement de l'écran
    Application.ScreenUpdating = False

    ' Afficher les onglets
    Sheets(strNomWsListes).Visible = True
    ' Activer le rafraîchissement de l'écran
    Application.ScreenUpdating = True
    
    ' Réactiver la protection du classeur
    Call ProtegerClasseur

End Sub

Bonne continuation

Gdal
 

toune21

XLDnaute Impliqué
Re : MdP pour afficher onglet

Bonsoir Gdal,

Merci d'avoir lu mon message.

Un peu lourd, en fait
il me faut juste une procédure pour bloquer "Afficher" "Masquer" les onglets avec un mot de passe. Le bouton onglet est juste le patron. Les autres sont accessibles à la personne qui suit la saisie.

Cordialement,
MM
 

toune21

XLDnaute Impliqué
Re : MdP pour afficher onglet

Bonjour Fo_rum, et à tous


Bonsoir,

une proposition avec ce que j'ai compris (MDP1,MDP2 pour les mots).

Une petit question si j'ai tout compris, il faut que je mette un mot de passe à chaque onglet ?

Merci, j'avance.
Salutations
MM
(Modifs) je viens d'adapter votre code à mon projet, j'ai copié le bouton "Menu" sur tous mes onglets et quand je clic voilà ou il s'arrête (ligne en gras)

Private Sub CommandButton1_Click()
Sheets ("Menu").Visible = True
Sheets ("Menu").Visible = False
End Sub

Une idée ? Cordialement, et peut être un seul MDP serait suffisant !
MM
 
Dernière édition:

Fo_rum

XLDnaute Accro
Re : MdP pour afficher onglet

Bonsoir,

Dans,
Code:
If ComboBox1 = "" And TextBox1 = "" Then Exit Sub
If TextBox1.Value = Array("MDP1", "MDP2")(ComboBox1.ListIndex) Then
    Feuil = ComboBox1
Tu as 2 choses importantes

1-) Si tu veux le même mot de passe (par exemple MDP) pour tous les onglets, remplace la 2[SUP]ème[/SUP] ligne par
If TextBox1.Value = "MDP" Then

2-) Le nom de l'onglet choisi dans la liste est mis dans la variable que j'ai appelée Feuil (3[SUP]ème[/SUP] ligne).
Cette variable est déclarée en Public dans un module pour être passée hors USF.

Pour revenir à la feuille "Menu", tu peux le faire sans bouton et avec une seule macro dans ThisWorkbook en double cliquant sur une cellule (la même pour toutes les feuilles, A1 par exemple).

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$A$1" Then Exit Sub
Sheets("Menu").Visible = True
Sheets(Feuil).Visible = False
End Sub

Attention, au moins une feuille doit rester visible d'où l'ordre des 2 dernières lignes !
 

Fo_rum

XLDnaute Accro
Re : MdP pour afficher onglet

Re,

Gdal, tu soulèves le problème de protection d'un classeur. Ceci n'était pas le sujet et de plus ce thème ne m’intéresse pas. Que de discussions ici ou là (notamment une très récente dans le Salon) !
Maintenant il s'agit pour toune21 de savoir quel degré d'interdiction il souhaite. Ta proposition pourra peut-être lui convenir ;).
 

Gdal

XLDnaute Nouveau
Re : MdP pour afficher onglet

Bonsoir,

Aucun soucis :)
Je répondais par rapport à ce que j'avais compris:
il me faut juste une procédure pour bloquer "Afficher" "Masquer" les onglets avec un mot de passe. Le bouton onglet est juste le patron. Les autres sont accessibles à la personne qui suit la saisie.
Ce qui, pour moi, voulait dire que seul "le patron" devait avoir accès autres onglets. Et d'attirer l'attention, sur le fait que dans la solution de Fo_rum, n'importe quel utilisateur peut effectuer un clique droit sur l'onglet visible et afficher les autres onglets sans avoir le code.
Autre chose: sous Excel, la combinaison [Atl]+[F11] ouvre l'éditeur VBA, et donne donc accès au mot de passe.

Bonne continuation

Gdal
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 849
dernier inscrit
florentMIG