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 :

verrouillage de toutes les feuilles en une fois


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut verrouillage de toutes les feuilles en une fois
    Bonjour à vous tous,
    Sur ce forum, j'ai trouvé une procédure pour verrouiller/déverrouiller toutes les feuilles d'un classeur excel.
    J'ai 8 feuilles et quand je ferme mon classeur, les feuilles sont automatiquement verrouillées.
    https://www.developpez.net/forums/d1...es-d-classeur/

    Pour verrouiller, cela fonctionne très bien mais pas l'inverse.
    J'ai une erreur 1004, mot de passe non valide. Par contre, quand je déverrouille manuellement, mon mot de passe est correct.
    Je suis occupé à me tirer les cheveux, sûrement pour une bêtise.
    Merci pour votre aide. Je précise que je suis sous excel 2016

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i As Integer
     
        For i = 1 To Sheets.Count
            Sheets(i).Protect Password:="Password"
        Next
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i As Integer
     
        For i = 1 To Sheets.Count
            Sheets(i).Unprotect Password:="Password"
        Next
    Sur mon print screen, les boutons 6 et 7 ne me servent que de test. Bouton 6 pour le déverrouillage et le 7, verrouillage

    Nom : Annotation 2020-07-11 163535.png
Affichages : 1638
Taille : 29,0 Ko

  2. #2
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Hello,

    Assez bizarre, surtout que dans ton code les deux mdp sont identiques.

    Essaie peut-être de variabiliser ton mdp par une variable public et aussi d'indiquer la parentalite de ta feuille (Worbooks("non du classeur"), c'est toujours mieux en cas de plusieurs wb ouverts.

    Quid : à voor si le mdp bug pour toutes tes feuilles, peut-être l'une d'elle était déjà "bloquée" avec un autre mdp ?

    Pour info, le fait de "protéger" une feuille Excel n'est qu'une toute petite barrière, pour éviter des modifications impromptues, qui est très facile à outre passer.

    Bat,
    MFoxy
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  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
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim WS As Worksheet
     
    For WS To ActiveWorkbook.Worksheets
        If WS.Protected Then WS.Unprotect Password:="Password"
    Next WS
    Le problème peut aussi venir du fait que tu combines (d'après ce que tu dis) le (dé)verrouillage automatique (par macro) et manuel.
    Il est donc possible que la macro cherche à déprotéger des feuilles qui le sont déjà.

    Petite remarque : les deux opérations pourraient se gérer avec un seul bouton, ce qui éviterait les jeux de cache-cache avec Visible.

    Citation Envoyé par mfoxy Voir le message
    Essaie peut-être de variabiliser ton mdp par une variable public
    Quand on installe une serrure, on évite de laisser la clé accrochée à la porte.
    Gardons à l'esprit qu'il s'agit d'un mot de passe (même si utiliser VBA pour faire ça est déjà une faille de sécurité).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour Menhir,

    Tout à fait d'accord avec toi :

    Citation Envoyé par Menhir Voir le message
    Quand on installe une serrure, on évite de laisser la clé accrochée à la porte.
    Le fait de le mettre dans une variable public, éviterait simplement de devoir le taper en dure dans sa function protect and unprotect, et je n'ai pas dit que le mdp serait non plus en dure dans cette variable d'autre contournement plus "safe" sont envisageables.

    De plus, je suppose aussi que, si le demandeur compte protéger des feuilles du classeurs, il protégera aussi son projet Vba ou le mdp sera d'une manière ou d'une autre présent.

    Ne relançons pas ici le débat sur la protections d'un Workbook et Projet Vba, lol, je cherche toujours une solution inviolable et n'ai jamais trouvé.

    Bonne soirée,
    MFoxy
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Oui, c'est assez bizarre et j'ai refait le contrôle sur toutes mes feuilles, le mot de passe est bien "Password".
    Y a-t-il vraiment un moyen de protéger un fichier excel ?

    Citation Envoyé par Menhir Voir le message
    Merci pour cette idée, je vais essayer. En fait, des collègues utilisent aussi ce fichier et pour éviter toutes modifications dans les calculs, je protège mes feuilles par un mot de passe et le code vba est aussi protégé mais avec un mot de passe différent, plus compliqué.
    Le but ici, c'est de pouvoir déprotéger les feuilles quand je veux faire une modification pour améliorer le programme. Puis, quand tout est ok, je reprotège le programme et c'est pour éviter de devoir le faire sur toutes les feuilles, une par une. Ce qui est la solution la plus simple mais la plus longue.

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 232
    Points : 5 632
    Points
    5 632
    Par défaut
    Bonjour,

    Essayez celui-ci, il fonctionne bien chez moi
    le fichier
    Pièce jointe 574861

    la vidéo
    Pièce jointe 574860

    le code
    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 CommandButton1_Click()
        Dim i As Integer
        For i = 1 To Sheets.Count
            Sheets(i).Unprotect Password:="Password"
        Next
        Me.CommandButton1.Visible = False
        Me.CommandButton2.Visible = True
    End Sub
     
    Private Sub CommandButton2_Click()
        Dim i As Integer
        For i = 1 To Sheets.Count
            Sheets(i).Protect Password:="Password"
        Next
        Me.CommandButton2.Visible = False
        Me.CommandButton1.Visible = True
    End Sub
    Cdlt

  7. #7
    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 bigounet Voir le message
    Y a-t-il vraiment un moyen de protéger un fichier excel ?
    Quand VBA est inclus dans la procédure ? Je peux me tromper mais j'en doute.
    Si c'est faisable, ce sera certainement avec une procédure assez lourde et contraignante.

    En fait, des collègues utilisent aussi ce fichier et pour éviter toutes modifications dans les calculs, je protège mes feuilles par un mot de passe
    De deux choses l'une :
    Soit tu veux protéger tes feuilles des maladresses d'autrui. Dans ce cas, une modification sans mot de passe suffira parce que si quelqu'un va volontairement retirer la protection, ce n'est plus de la simple maladresse mais un acte volontaire.
    Soit tu veux protéger tes feuilles de la malveillance. Dans ce cas, inclure VBA dans la boucle est une mauvaise idée car im présente des failles de sécurité.

    le code vba est aussi protégé mais avec un mot de passe différent, plus compliqué.
    A ta place, à minima, j'aurais mis le code VBA de (dé)verrouillage dans un autre fichier, un XLAM par exemple, présent uniquement sur ton poste , faisant du fichier à protéger un XLSX ne contenant le mot de passe que dans la protection elle-même et nulle part ailleurs.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je suis d'accord avec Menhir en ce qui concerne la protection des feuilles et du VBA même si personnellement je ne protège jamais mes codes VBA.

    En marge de cette discussion, je voulais juste signaler qu'au lieu d'utiliser deux boutons l'un pour protéger et l'autre pour déprotéger, j'utiliserais un ToggleButton qui agit comme un interrupteur et dont la valeur est soit True soit False et en ce qui concerne la programmation, je créerais une seule procédure avec au minimum un argument (Protect/Unprotect) et éventuellement un second argument le mot de passe
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    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
    Personnellement, je créerai un (ou deux) icones dans la barre d'outils à accès rapide (ou dans un ruban spécifique) lançant une macro d'un XLAM qui commencerait par un InputBox demandant le mot de passe.
    L'avantage, c'est que ça pourrait être utilisé sur ce fichier et sur d'autres.
    L'avantage de l'InputBox, c'est que le mot de passe ne serait écrit nulle part dans le code et qu'il serait possible de le modifier sans avori à toucher le code en cas de découverte.

    Mais, je le répète, si c'est juste pour éviter les maladresses, l'usage d'un mot de passe dans la protection ne semble pas justifié.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Personnellement, je créerai un (ou deux) icones dans la barre d'outils à accès rapide (ou dans un ruban spécifique) lançant une macro d'un XLAM qui commencerait par un InputBox demandant le mot de passe.
    L'avantage, c'est que ça pourrait être utilisé sur ce fichier et sur d'autres.
    L'avantage de l'InputBox, c'est que le mot de passe ne serait écrit nulle part dans le code et qu'il serait possible de le modifier sans avori à toucher le code en cas de découverte.

    Mais, je le répète, si c'est juste pour éviter les maladresses, l'usage d'un mot de passe dans la protection ne semble pas justifié.
    Merci pour toutes vos idées. Par contre, je ne connais pas du tout le XLAM.

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 729
    Points : 28 555
    Points
    28 555
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par contre, je ne connais pas du tout le XLAM
    C'est ce que l'on appelle les macros complémentaires (le solveur en est un)
    Le gros avantage c'est qu'il est utilisable avec tous les classeurs.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2006
    Messages : 110
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    C'est ce que l'on appelle les macros complémentaires (le solveur en est un)
    Le gros avantage c'est qu'il est utilisable avec tous les classeurs.
    Merci à tout le monde. Je vais faire des recherches sur les macros complémentaires. Bon dimanche.

  13. #13
    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
    XLAM n'est pas un langage, c'est un format d'Excel, comme les XLSX ou les XLSM.

    C'est un format qui a la particularité de ne pas avoir de feuille de calcul apparente, ce qui est pratique pour stocker des macros et que ce soit transparent pour l'utilisateur. En somme, c'est un XLSM sans feuilles apparentes et qui n'affiche pas de fenêtre Excel propre.

    Personnellement, j'ai une dizaine de XLAM qui s'ouvrent automatiquement quand j'ouvre Excel, sans que rien n'apparaisse ailleurs que dans le gestionnaire de projets du VBE.
    Lire ça : https://support.microsoft.com/fr-fr/...rs=fr-fr&ad=fr
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. [XL-2010] Masquer toutes les feuilles sauf une
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/04/2017, 17h21
  2. Récupérer toutes les données en une fois depuis la base.
    Par zuzuu dans le forum Persistance des données
    Réponses: 3
    Dernier message: 10/03/2009, 12h41
  3. [E-00] Supprimer toutes les feuilles sauf une
    Par imaril dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/10/2008, 11h30
  4. Imprimer toutes les colonnes sur une même feuille
    Par Soulghard dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 13h10
  5. [VBA-E] supprimer le contenu de toutes les cellules d'une feuille
    Par BipBip2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/08/2004, 16h13

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