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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    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 609
    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 609
    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

  3. #3
    Expert éminent 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
    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).

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    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 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
    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).

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    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 609
    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 609
    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.

  8. #8
    Expert éminent 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
    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.

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