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 :

Acces en écriture + macro protection de la structure


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut Acces en écriture + macro protection de la structure
    Bonjour,

    j'ai actuellement 2 fonctionnalités majeures dans mon classeur Excel 2000 :

    1. Mot de passe sur les modifs générale (enregistré sous => option => options générales => mot de passe permettant l'acces en écriture)

    1. J'ai 2 boutons permettant l'un de protéger la structure de mon classeur (avec mdp) + affiche 2 feuilles, et l'autre bouton permet de faire l'inverse : cacher 2 feuilles et demande la saisie d'un mot de passe pour verrouiller la structure du classeur.

      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
      18
      19
      20
      21
      22
      23
      24
      25
      26
       
      ' Protège classeur + cache feuilles
      Sub protect()
       
      mdp_protect = InputBox("Saisir le mot de passe :", "Initialisation mot de passe")
       
          Sheets(Array("Sheet2", "Sheet3")).Select
          Sheets("Sheet1").Activate
          ActiveWindow.SelectedSheets.Visible = False
          ActiveWorkbook.protect password:=mdp_protect, Structure:=True, Windows:=False
      End Sub
       
       
       
      ' Déverrouille classeur + affiche feuilles
      Sub Unprotect()
       
       
          mdp_protect = InputBox("Saisir le mot de passe :", "Mot de passe requis")
       
       ActiveWorkbook.Unprotect password:=mdp_protect
          Sheets("Sheet2").Visible = True
          Sheets("Sheet3").Visible = True
          Sheets("Sheet1").Select
       
      End Sub


    Mon but est bien sûr de lier ces 2 fonctionnalités en une seule. C'est à dire si l'utilisateur connait le mdp d'acces en écriture, les 2 feuilles seront affichées. Le cas contraire (lecteur seule), les 2 feuilles seront cachées.

    Si quelqu'un à une petit idée, je suis preneur.

    Merci

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour mashu,

    voici une possibilité en utilisant les événement Open et BeforeClose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
    If Not ActiveWorkbook.ReadOnly Then
     mdp_protect = InputBox("Saisir le mot de passe :", "Mot de passe requis")
     If mdp_protect = "zz" Then 'à adapter
        ActiveWorkbook.Unprotect Password:=mdp_protect
        Sheets("Sheet2").Visible = True
        Sheets("Sheet3").Visible = True
     End If
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Not ActiveWorkbook.ReadOnly Then
        ActiveWorkbook.Unprotect Password:="zz" 'à adapter
        Sheets("Sheet2").Visible = False  'ou xlVeryHidden
        Sheets("Sheet3").Visible = False
        ActiveWorkbook.Protect Password:="zz", Structure:=True, Windows:=False
        ActiveWorkbook.Save
    End If
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut
    Merci Isabelle, c'est tout a fait que je souhaitais !

    Par contre j'ai enlevé le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mdp_protect = InputBox("Saisir le mot de passe :", "Mot de passe requis")
     If mdp_protect = "zz" Then 'à adapter
    Une nouvelle fenêtre s'ouvrait et ca me paraissait inutile et redondant.

    Dernière question : dans cet exemple, l'utilisateur peur voir le mot de passe entrée en ouvrant le code sous Visual basic.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Unprotect Password:="zz"
    Y aurait-il un moyen de mettre dans une variable le mot de passe saisi lors de l'enregistrement (enregistré sous => option => options générales => mot de passe permettant l'acces en écriture) ? Ca permettrait une parfaite sécurité...

    A+

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour mashu,

    Y aurait-il un moyen de mettre dans une variable le mot de passe saisi lors de l'enregistrement (enregistré sous => option => options générales => mot de passe permettant l'acces en écriture) ? Ca permettrait une parfaite sécurité...
    une possibilité est de mettre le mot de passe dans un fichier texte et de lire ce fichier pour comparer, un autre solution est d'ultiliser un UserForm avec un TextBox et sa propriété PasswordChar.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut
    ok merci

    je vais essayer comme tu me conseilles avec le mdp dans un autre fichier et de le vérifier.

    A+

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/07/2007, 11h38
  2. Interdire l'accès en écriture à un site
    Par maya dans le forum Apache
    Réponses: 1
    Dernier message: 01/02/2007, 17h38
  3. Réponses: 4
    Dernier message: 12/12/2006, 12h30
  4. Accès en écriture à bdd paradox via webservice
    Par PitchOu dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2006, 09h42
  5. Violation d'accès en écriture
    Par Grey dans le forum MFC
    Réponses: 8
    Dernier message: 18/11/2005, 16h31

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