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 :

Protéger/déprotéger fichier excel en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut Protéger/déprotéger fichier excel en VBA
    Bonjour à tous,

    je suis en train de rechercher comment faire pour protéger et déprotéger un classeur excel via une commande VBA.

    je vous explique ma problématique

    je pars d'un classeur Excel A sur lequel j'ai un bouton qui fait la liaison avec un classeur Excel B (nommé suivi.xlsm)
    sur le classeur Excel B afin qu'il ne soit pas touché/modifié j'ai un mot de passe dessus à l'ouverture du classeur

    ce que j'aimerais c'est lors de l'appui sur le bouton "sauvegarder" dans mon fichier A ca puisse enlever la protection de mon classeur B et que ca fasse tourner mon code et qu'ensuite à la fin de celui-ci ca remette la protection

    j'ai tenté ceci mais ca ne fonctionne pas:

    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
    31
     
     
    Sub Sauvegarder()
     
        ActiveWorkbook.Protect userinterfaceonly:=True, Password:="test"
     
        ' Déclaration variable
        Dim nbdx As Integer
     
    'A - Sauvegarde après avoir figé le n° du bordereau
     
        Sheets("DATA").Select
        Sheets("Module_SOPRO").Select
        Range("D2").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ChDir Range("D12").Value
            ActiveWorkbook.SaveAs Filename:= _
            Range("D15").Value _
            , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
     
     
        Application.CutCopyMode = False
        Windows("Suivi.xlsm").Close SaveChanges:=True
     
        Application.DisplayAlerts = False
        Application.Quit
     
    End Sub
    Merci de votre aide
    Blado_sap

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Il faudrait voir de quelle protection il s'agit.
    Si c'est la feuille qui est protégée, tu peux utiliser Workbooks("Suivi.xlsm").Sheets("LaFeuille").UnProtect "mot de passe si nécessaire"
    Si c'est le classeur, tu peux enlever la protection lors du Workbooks.Open
    MPi²

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Il y a de nombreuses façon de protéger un fichier Excel : Protection du fichier par droits liés au login, protection du classeur contre la lecture ou l'écriture, protection des cellules, etc.

    Pour (dé)protéger une feuille de calcul au niveau cellule, il faut utiliser la méthode Protect / Unprotect de Worksheet
    Une méthode de même nom (mais à la syntaxe et aux effets différents) peut être appliquée à Workbook pour protéger tout le classeur.

    Pour ce qui est de la protection du classeur contre la modification d'une manière générale, ça se fait dans las paramètres de la méthode SaveAs de Workbook et Open de Workbooks (attention au "s" final de ce Workbooks).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous,

    c'est le classeur complet qui est protégé et non les feuilles

    lorsque vous etes sous Excel c'est l'option "chiffrer avec mot de passe" qui demande un mot de passe à l'ouverture d'excel

    avez vous une idée?

    D'avance merci

    et si oui en fonction de mon code svp car je m'en sors pas

    Blado_sap

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Blado_sap Voir le message
    c'est le classeur complet qui est protégé et non les feuilles
    Dans ce cas, tu ne peut déverouiller ton classeur qu'à l'ouverture : voir les options de la méthode Open de l'objet Workbooks.
    Pour rétablir la protection, voir les options de la méthode SaveAs de l'objet Workbook.
    (attention, remarque bien que dans le premier cas, Workbooks est avec un "s" final et que dans le second cas, il n'y en a pas).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    bonjour,

    j'ai testé ça:

    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
     
     
    Sub Sauvegarder()
     
    Workbooks.Open Filename:="C:\test.xlsm", Password:="test" 
     
    ' Sauvegarder Macro
    '
    'A - Je sauvegarde après avoir figé le n° du bordereau
     
        Sheets("DATA").Select
        Sheets("Module_SOPRO").Select
        Range("D2").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ChDir Range("D12").Value
            ActiveWorkbook.SaveAs Filename:= _
            Range("D15").Value _
            , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    en début de mon fichier mais ça ne fonctionne pas

    je me demande si le fait lorsque j'accède a ce morceau de code il n'est pas déjà trop tard et que la macro essaye déjà ouvrir excel avant en me demandant le mot de passe

    une idee?
    Blado_sap

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Ça dépend comment est protégé le fichier.
    Il y a Password et WriteResPassword où tu peux mettre un mot de passe.
    MPi²

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Blado_sap Voir le message
    ça ne fonctionne pas
    Extrèmement précis comme descriptif de problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Sheets("DATA").Select
        Sheets("Module_SOPRO").Select
        Range("D2").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        ChDir Range("D12").Value
        ActiveWorkbook.SaveAs Filename:= Range("D15").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    Je ne comprends pas pourquoi tu mets deux Select d'onglet à la suite. Le premier n'a aucun intérêt puisqu'il est annulé par le suivant.
    Sans compter sur sur un Worksheet, on met plutôt un Activate qu'un Select si l'on veut que l'onglet devient celui désigné par défaut dans les instructions qui suivent.

    A ta place, je supprimerai aussi le Select sur le Range et je remplacerai les Selection par Range("D2").

    Pour le PasteSpecial, inutile de mettre les options implicites. Tu pourrais te contenter de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D2").PasteSpecial Paste:=xlPasteValues
    C'est plus facilement lisible.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    merci pour ces précieux conseils

    par contre ca ne resoud toujours pas mon probleme de mot de passe

    en fait en mettant la ligne de code workbooks.open...
    et bien le système me demande toujours le mot de passe, il ne tient pas compte de l'instruction ou je passe le mot de passe dedans

    est ce plus clair?

    Blado_sap

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Quand tu ouvres ton fichier manuellement, qu'est-ce que tu as comme message ?

    Ouverture en lecture seule qui permet de l'ouvrir même sans mot de passe ?
    Nom : Classeur en lecture seule.jpg
Affichages : 9362
Taille : 24,5 Ko

    Ou protégé que tu ne peux ouvrir ?
    Nom : Classeur protégé.jpg
Affichages : 9366
Taille : 16,0 Ko

    Si aucun de ceux-ci, comment protèges-tu le fichier ?
    en enregistrant sous... / Outils / Options générales
    ou directement dans le menu Excel ?
    MPi²

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    c'est le deuxième message que j'ai "protégé que je ne peux ouvrir"

    Blado_sap

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je vais sans doute poser une question bête mais est-ce que tu es sûr de mettre le bon mot de passe dans ta commande Open ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je vais sans doute poser une question bête mais est-ce que tu es sûr de mettre le bon mot de passe dans ta commande Open ?
    Effectivement... et attention aussi à la casse...
    MPi²

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    bonjour,

    oui je suis certain de mette le bon mot de passe

    en même temps : test
    comme mot de passe c'est pas très compliqué

    blado_sap

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Et si tu reprenais ton code en mettant bien le nom du classeur visé en plus du nom de la feuille dans les lignes d'instructions ?
    MPi²

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    c'est à dire??

    Blado_sap

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    En fait, dans la même sub, tu utilises
    ActiveWorkbook et Windows("Suivi.xlsm")

    Au cas où...
    ActiveWorkbook est le classeur affiché à l'écran
    ThisWorkbook est celui qui contient la macro qui roule.

    Comme je ne connais pas tes fichiers, je ne suis pas certain où on se trouve...
    Si tu remettais le code où tu en es en disant sur quelle ligne ça plante ?
    MPi²

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    Le fichier que j'essaie d'ouvrir s'appelle test.xlsm
    Ce fichier est protégé à l'ouverture par un mot de passe : test

    dans ce fichier j'ai ceci:

    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
     
     
    Sub Sauvegarder()
     
    Workbooks.Open Filename:="C:\test.xlsm", Password:="test" 
     
    ' Sauvegarder Macro
    '
    'A - Je sauvegarde après avoir figé le n° du bordereau
     
        Sheets("Module_SOPRO").Select
        Range("D2").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ChDir Range("D12").Value
            ActiveWorkbook.SaveAs Filename:= _
            Range("D15").Value _
            , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    Le bouton Sauvegarder se trouve dans un autre fichier excel sur lequel je n'ai pas la main (il y a juste ce bouton qui me permet d'accéder au fichier test.xlsm)

    Blado_sap

  19. #19
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Qu'entends-tu par
    Le bouton Sauvegarder se trouve dans un autre fichier excel sur lequel je n'ai pas la main
    Donc la macro plante dès la première ligne qui cherche à ouvrir test.xlsm ?
    Si c'est le cas, est-ce qu'il y a quelque chose dans Workbook_Open() de ce fichier qui l'empêcherait de s'ouvrir ?
    MPi²

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    La macro ne plante pas c'est juste que le code pour ouverture avec le mot de passe est comme ignore car excel me demande tjr le mot de passe

Discussions similaires

  1. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h21
  2. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h20
  3. Fermeture fichier excel en vba
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/11/2006, 21h30
  4. créer un fichier excell avec VBA(access)
    Par JCH dans le forum Access
    Réponses: 1
    Dernier message: 19/09/2006, 19h07
  5. Ouverture d'un fichier Excel en VBA par Access
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 02/11/2005, 11h14

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