IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

protection par mot de passe empêcher la lecture d'une feuille [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut protection par mot de passe empêcher la lecture d'une feuille
    Bonjour,

    Dans la FAQ et dans certains tutoriels j'ai bien trouvé comment faire pour protéger par mot de passe un classeur ou une feuil, mais on peut quand-même ouvrir la feuil. Elle est protéger en écriture seulement. Moi je cherche comment faire pour qu'une feuil laisse bien paraître son onglet mais que lorsque l'on clique dessus, la feuil demande un mot de passe avant d'afficher la moindre info la concernant.

    Est-ce possible ?

  2. #2
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Je sais pas trop ce que tu veux mais en gros pour protéger une feuille c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("NOMDETAFEUILLE").Protect=TRue
    ou alors manuellement dans Outils >> Protection >> Proteger la feuille

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Salut,

    Sinon sans passer par VBA c'est Outil -> Option -> Sécurité -> Mot de passe pour la lecture

    Et là la personne ne peut rien voir du tout du classeur...

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    c'est ma faute apparemment je me suis encore mal expliqué. Je réessaye :

    Quand le classeur est ouvert, on voit tous les onglets de son classeur et quand on clique dessus on change de feuille et donc on affiche le contenu de celle-ci. Par exemple qie je clique sur fournisseur, j'aurais donc la feuille fournisseur... jusque là tout va bien.

    Mais moi je voudrais faire une feuille avec les remises et donc je ne veux pas que tous le monde puisse ouvrir cette feuille et voir toutes nos conditions fournisseurs et nos remises. Seul les personnes autorisées pourront la consulter cette feuille.

    Donc si je protège la feuille, tous simplement en allant dans Révision, Protéger la feuille, ça me protègera la feuille uniquement pour que les gens ne puisse saisir à l'intérieur de la feuille ou changer sa mise en forme. Mais ils pourront la consulter quand-même et voir toutes les remises fournisseurs, ce qui ne me sert en fait à rien.

    Je voudrais que lorsque quelqu'un veut cliquer sur l'onglet "fournisseur", ça n'ouvre pas la feuil à moins que l'on ne tape un mot de passe.

    Est-ce que vous m'avez comprise ?

    Merci beaucoup

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Dans ce cas là, il faut ruser et utiliser une condition sur sheets("Nom").activate.
    Dans ta condition, tu fait afficher une inputbox avec la demande d'un mot de passe qui sera définit dans ton code VBA. Si le mot de passe correspond alors il ne se passe rien, sinon tu fait afficher la feuille.

    Si la feuille s'affiche puis affiche la inputbox, cache le classeur (.hide) puis réaffiche le sur la feuille correspondant au mot de passe.

    Sinon plus simplement je ne voit pas comment faire.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    et pourquoi ne pas cacher cet onglet ?

    seules les personnes le connaissant iraient le chercher... sinon tu peux protéger l'accès à VBA par un mot de passe, comme ça il sera impossible d'y accéder de cette manière...

    Oups... une réponse plus claire a été postée avant^^

  7. #7
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Pour info, il y a moyen en VBA de masquer une feuille en mode VeryHidden ce qui ne permet pas de pouvoir la rendre visible manuellement via le menu "Afficher feuille" (elle n'apparaît pas parmi les feuilles masquées)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuille").Visible = xlVeryHidden
    Et pour la rendre à nouveau visible il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuille").Visible = True
    Avec ça on peut imaginer toutes sortes de fioritures, mot de passe et touti quanti

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    merci beaucoup Fring,

    donc je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuille").Visible = xlVeryHidden
    dans ma feuille. Mais ma collègue qui pourra y aller ne connait absolument rien au VBA, elle ne sait pas ce que c'est. (encore plus nul que moi ça existe, eh oui

    Elle ne pourra donc pas aller remplacer ce code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuille").Visible = True
    donc comment faire ?

    As-tu au moins une piste stp

    Merci

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 507
    Points : 16 432
    Points
    16 432
    Par défaut
    Bonjour

    Une solution simple : masquer la feuille et protéger le classeur.

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    non je ne peux pas faire ça car parfois on montre certaines choses à des clients, d'autres feuilles non sensibles et je ne voudrais pas que par mégarde hop on clique sur la mauvaise feuille.

    Je sais faudrais vraiment être maladroit mais c'est trop important.
    En plus apparemment, selon Fring il existe une solution... je suis en train de chercher dans la FAQ et les tutoriels... je vous tiens au courant si j'y arrive

  11. #11
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Une solution éventuelle :

    à la fermeture du classeur, on masque la feuille en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("LaFeuille").Visible = xlVeryHidden
    End Sub
    à l'ouverture du classeur on demande un mdp pour éventuellement passer en mode administrateur et avoir accès à toutes les feuilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Workbook_Open()
    Dim mdp As String, testmdp As String
     
    mdp = "motdepasse"
     
    reco:
    testmdp = InputBox("Introduisez le mdp pour passer en mode administrateur")
     
    If testmdp = mdp Then
        Sheets("LaFeuille").Visible = True
    ElseIf testmdp <> "" Then
        MsgBox "Mot de passe erroné" & Chr(10) & "Réessayez pour passer en mode Administrateur" & Chr(10) & "ou laissez vide pour rester en mode normal"
        GoTo reco
    End If
     
    End Sub
    Pour éviter d'avoir cette demande de mdp à chaque ouverture du classeur, on peut aussi l'activer via un bouton par exemple, ou simplement mettre le code dans un module et ajouter un raccourci clavier à la macro (Ctrl+M) ce qui permettrait de pouvoir passer en mode administrateur même si le classeur est déjà ouvert.

    Ne pas oublier de protéger également le project VBA avec un mdp vu que celui-ci est clairement indiqué dans le code tout en gardant à l'esprit qu'aucune protection est infaillible...

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    Je te remercie beaucoup, c'est génial ce code. Je vais m'en servir dans plusieurs de mes classeurs. Je me suis servis de ton idée de bouton.

    Juste une question. Est-ce qu'on peut utiliser ce code pour cacher certaines colonnes.

    Je m'explique: au lieu de cacher une feuille entière on cacherait certaines colonnes qui s'afficherait si on tape le mot de passe via un bouton comme tu me l'as indiqué précédemment ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Clients").Visible = True.Column("G").Hidden = FalsexlVeryHidden
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub CommandButton3_Click()
    Dim mdp As String, testmdp As String
     
    mdp = "mot de passe"
     
    reco:
    testmdp = InputBox("Introduisez le mot de passe pour passer en mode administrateur")
     
    If testmdp = mdp Then
        Sheets("Clients").Visible = True
        Columns("G").Visible = True
    ElseIf testmdp <> "" Then
        MsgBox "Mot de passe erroné" & Chr(10) & "Réessayez pour passer en mode Administrateur" & Chr(10) & "ou laissez vide pour rester en mode normal"
        GoTo reco
    End If
    End Sub
    mais ça ne marche pas. Je suppose que je me suis trompé quelque part ???

  13. #13
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par manuseverine Voir le message
    Juste une question. Est-ce qu'on peut utiliser ce code pour cacher certaines colonnes.
    Oui mais à ce moment là il faut procéder différemment et la propriété VeryHidden ne fonctionne que pour les onglets, pas pour les colonnes ou les lignes.

    A la fermeture du fichier on masque la colonne et on protège la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("Clients").Columns("G").Hidden = True
    Sheets("Clients").Protect Password:="motdepasse"
    End Sub
    A l'ouverture du fichier, si le mdp est correct on déverrouille la feuille et on affiche la colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Workbook_Open()
    Dim mdp As String, testmdp As String
     
    mdp = "motdepasse"
     
    reco:
    testmdp = InputBox("Introduisez le mdp pour passer en mode administrateur")
     
    If testmdp = mdp Then
        Sheets("Clients").Unprotect Password:=mdp
        Sheets("Clients").Columns("G").Hidden = False
    ElseIf testmdp <> "" Then
        MsgBox "Mot de passe erroné" & Chr(10) & "Réessayez pour passer en mode Administrateur" & Chr(10) & "ou laissez vide pour rester en mode normal"
        GoTo reco
    End If
     
    End Sub

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    merci beaucoup, c'est génial, ça fonctionne. Je ne pensais pas que c'était possible du tout.

    Je suis passé par un bouton pour voir la colonne par mot de passe.

    Par contre je me demandais : une fois qu'on est en mode Administrateur, on voit tout pas de soucis mais est-il possible de créer un bouton qui quand on clique dessus on repasse en mode normal ou faut-il fermer le classeur et le rouvrir ?

    Merci beaucoup pour tous ces conseils

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Bonjour Manuseverine,

    Il suffit alors de dupliquer le code de la fonction Workbook_BeforeClose dans le code associé à ton bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
        Sheets("Clients").Columns("G").Hidden = True
        Sheets("Clients").Protect Password:="motdepasse"
    End Sub
    Et tu repasses en mode normal...

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Points : 69
    Points
    69
    Par défaut
    évidemment suis-je bête ...

    merci beaucoup à tous les 2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JMX Console]Protection par mot de passe
    Par Thomas_ats dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 16/04/2007, 17h50
  2. [Cookies] Variables sessions protection par mot de passe
    Par luciedoudou dans le forum Langage
    Réponses: 17
    Dernier message: 24/01/2007, 11h20
  3. Activer la protection par mot de passe sur l'écran de veille
    Par Raphs dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2006, 16h36
  4. protection par mot de passe projet
    Par largowinch dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 19/10/2006, 21h16
  5. Protection par mot de passe
    Par BigZ444 dans le forum Delphi
    Réponses: 2
    Dernier message: 12/05/2006, 21h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo