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 :

Mot de passe protection classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Mot de passe protection classeur
    Bonjour,

    Je souhaite mettre en place un code qui permettrait à certaines personnes de visualiser l'ensemble des feuilles du classeur sans pouvoir les modifier. Un autre groupe serait autoriser à y apporter des modifications.
    En clair, ceux qui vont connaître le mot de passe pourront modifier des données les autres ne pourront que les visualiser.

    Donc à l'ouverture du classeur un MsgBox apparaît et demande le mot de passe.

    Pouvez-vous m'aider s'il vous plait ? Merci par avance

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Par défaut
    Il suffit que tu portège la feuille en question (clic droit->Protéger la feuille...). Ceux qui ont le droit de modifier font clic droit->Oter la protection->tapage du mot de passe.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    ça je sais le faire, mais j'ai une cinquantaine de feuilles à protéger et faire cette manip sur la totalité va me prendre beaucoup de temps, c'est pour cette raison que je souhaite passer par Vba.
    Merci toutefois pour ta réponse.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Une solution dans le classeur joint.

    • Une boite de dialogue s'ouvre à l'ouverture du fichier.
    • L'utilisateur a la possibilité de saisir un mot de passe ou de décider de passer pour visualiser uniquement.
    • Si le mot de passe est correct (eric), toutes les feuilles sont déprotégées.
    • Une macro événementielle sur doubleclick est présente sur chaque feuille et permet d'ôter la protection si jamais l'utilisateur a oublié de le faire à l'ouverture.
    • Les feuilles sont reprotégées avant la fermeture du fichier.


    Il est possible qu'à l'ouverture, l'utilisateur doive cliquer sur l'icone Excel dans la barre d'outils pour faire apparaître la boite de dialogue.

    Pour que la protection soit efficace, il faudra protéger l'accès au code VBA avec un mot de passe dans Outils - Propriétés de VBA Project - onglet protection dans l'éditeur VBA.

    Cordialement.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    hello
    il existe tout simplement la possibilité de mettre le classeur en lecture seule, le mot de passe sera demandé a qui l'ouvrira et seul ceux qui le connaitront pourront le modifier.
    solution plus solide qu'un mot de passe vba qui est si facile a contourner puisqu'il suffit de désactiver les macro. et cela même sans mauvaise intention puisque la désactivation dépend de la configuration de l'ordi

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour à tous et merci pour vos propositions.

    Eric : J'ai bien réussi à ouvrir ton fichier joint, mais il n'y a pas de boîte de dialogue à l'ouverture du fichier.

    alsimbad : J'ai bien pensé à cette option. Il est vrai qu'elle est pratique

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Je reviens un instant sur ce sujet.
    Le code fonctionne trés bien, cependant une petite chose me gène un peu.
    Lors de l'ouverture et de la fermeture du fichier, toutes les feuilles sont passées en revue pour enlever ou remettre le mot de passe. Est-il possible de faire cela d'un bloc sans que l'on voit défiler les feuilles à l'écran ?
    Merci par avance

  8. #8
    Invité
    Invité(e)
    Par défaut
    Il faut ajouter des Application.ScreenUpdating = False et Application.ScreenUpdating = True dans la procédure DeprotegerLesFeuilles

    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
    27
    28
    29
    30
     
    Sub DeprotegerLesFeuilles()
     
     
        With UserFormDeproteger
     
            .TextBoxMotDePasse = ""
            .TextBoxMotDePasse.PasswordChar = "*"
     
            .Show
     
        End With
     
        If MotDePasseSaisi = MonMotDePasse Then
     
            Application.ScreenUpdating = False
     
            For Each Sh In Worksheets
                    Sh.Activate
                    ActiveSheet.Unprotect (MotDePasseSaisi)
                    Feuil1.Activate
            Next Sh
     
            Application.ScreenUpdating = True
     
            MsgBox ("Toutes les feuilles ont été déprotégées !" & Chr(10) & Chr(10) & "A la fermeture du fichier les feuilles seront automatiquement reprotégées.")
     
        End If
     
    End Sub

    Et éventuellement dans la procédure ProtegerLesFeuilles

    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
     
    Sub ProtegerLesFeuilles()
     
            For Each Sh In Worksheets
     
                     Application.ScreenUpdating = False
     
                     Sh.Activate
                     ActiveSheet.Protect Password:=MonMotDePasse, DrawingObjects:=True, Contents:=True, Scenarios:=True
                     Feuil1.Activate
     
                     Application.ScreenUpdating = True
     
            Next Sh
     
    End Sub
    Dernière modification par AlainTech ; 14/06/2013 à 20h35. Motif: Suppression de la citation

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Eric,

    Merci pour ta réponse, il est vrai que j'aurai du y penser.

    Cela fonctionne bien, à part la feuille19 qui elle clignote plusieurs fois lors de la fermeture du fichier.

    Je vais regarder de plus près.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Dans ce cas, il faut ajouter également ces deux lignes dans la macro événementielle Workbook_BeforeClose du module ThisWorkBook :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
      Application.ScreenUpdating = False
     
      Call ProtegerLesFeuilles
     
      Application.ScreenUpdating = True
     
    End Sub
    Quoique pour Application.ScreenUpdating = True on pourrait s'en abstenir puisque le fichier est fermé juste après.

    Cordialement.
    Dernière modification par AlainTech ; 14/06/2013 à 20h36. Motif: Suppression de la citation

  11. #11
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 94
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Quoique pour Application.ScreenUpdating = True on pourrait s'en abstenir puisque le fichier est fermé juste après.
    Non car cela bloquera l'affichage pour tout les fichiers ouverts en même temps que celui traité .

  12. #12
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 94
    Par défaut
    il faut retirer les screenupdating dans la méthode protégerlesfeuilles. Ca ne sert à rien de le désactiver/activer plusieurs fois de suite, c'est ça qui fait clignoter et ralentit l'éxécution.

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

Discussions similaires

  1. la protection d'un classeur Excel par un mot de passe
    Par medjahedmejdoub dans le forum VBScript
    Réponses: 1
    Dernier message: 28/12/2010, 23h05
  2. Protection du mot de passe de mysql
    Par FoxLeRenard dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 21/02/2006, 12h02
  3. Réponses: 1
    Dernier message: 14/02/2006, 00h40
  4. Réponses: 7
    Dernier message: 23/10/2005, 21h52

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