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 :

Intercepter la commande Protéger Feuille depuis Menu "Révision"


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 46
    Points : 33
    Points
    33
    Par défaut Intercepter la commande Protéger Feuille depuis Menu "Révision"
    Bonjour,

    Mon code VBA utilise le mot de passe de protection de la feuille. Il ne faut donc pas que l'utilisateur puisse le modifier à partir de la barre de menus (voire par un autre chemin si cela est aussi possible????)
    J'ai donc pensé à intercepter un appel à cette commande (Révision / Protéger la feuille) pour lancer une procédure qui donnerait possibilité de mettre un nouveau mot de passe par formulaire..... avec modification en cascade du code VBA qui l'utilise.

    J'ai bien cherché mais ne vois pas pourquoi le code ci-dessous ne fonctionne pas ????=erreur 5 Argument ou appel de procédure incorrect

    Merci de votre aide ou éclairage
    Cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub Workbook_Open()
    CommandBars(1).Controls("Révision").Controls("Protéger la feuille").OnAction="ModifierMDP"
    end sub

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    Points : 219
    Points
    219
    Par défaut
    Il vaut mieux utiliser les propriétés du projet VBA (via Outils) dans lequel vous pouvez encoder un mot de passe que vous seul connaitrez. La feuille doit être protégée également.
    Ce faisant personne ne pourra changer quoi que ce soit aux cellules protégées, ni à votre code.
    Si, par contre, vous voulez permettre à certains utilisateurs de manipuler le mot de passe, alors c'est plutôt un problème organisationnel qui sera difficile à gérer.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Belga16 Voir le message
    Il vaut mieux utiliser les propriétés du projet VBA (via Outils) dans lequel vous pouvez encoder un mot de passe que vous seul connaitrez. La feuille doit être protégée également.
    Ce faisant personne ne pourra changer quoi que ce soit aux cellules protégées, ni à votre code.
    Si, par contre, vous voulez permettre à certains utilisateurs de manipuler le mot de passe, alors c'est plutôt un problème organisationnel qui sera difficile à gérer.
    bonsoir Belga,
    je te remercie pour ce retour.
    malheureusement je me trouve effectivement dans la situation exposée en fin de post. J'ai effectivement prévu de protéger mon code pour empêcher quiconque de retrouver le mot de passe ..... Et c'est bien là mon problème ... IL FAUT que tout changement de mot de passe passe par ma macro our être logé là où je l'attends!!!

    Mon problème reste entier à ce stade
    bonne soirée

  4. #4
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    Points : 219
    Points
    219
    Par défaut
    Vous pouvez changer de concept: utiliser une table paramétrique (protégée et cachée) des utilisateurs du style User1, MDP1, User2, MDP2, .. etc
    On peut par ce biais, gérer l'accès par utilisateur, qui à son tour pourra changer son MDP à loisir, mais le cœur de votre programme reste inviolable pour les initiés.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Belga16 Voir le message
    Vous pouvez changer de concept: utiliser une table paramétrique (protégée et cachée) des utilisateurs du style User1, MDP1, User2, MDP2, .. etc
    On peut par ce biais, gérer l'accès par utilisateur, qui à son tour pourra changer son MDP à loisir, mais le cœur de votre programme reste inviolable pour les initiés.
    Bonjour Belga16,

    Merci pour cette nouvelle piste. Mais j'avoue ne pas savoir comment on crée une telle table .....
    Ceci étant peut être n'ai-je pas été assez précis mais il ne s'agit pas d'empêcher la "déprotection" de la feuille à certains utilisateurs .... mais de les empêcher de modifier le mot de passe de la protection pour nuire aux autres !!! C'est donc la raison pour laquelle je cherche à intercepter cette commande pour lancer ma macro espion (permet de retrouver le mot de passe).
    Avez-vous par ailleurs une idée sur la raison du plantage de mon code cité en début de post ? (j'ai pourtant suivi les exemples vus sur le Net pour CommandBars)

    Merci encore pour l'intérêt que vous portez à mon problème?
    Cordialement

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,

    Citation Envoyé par Pilote1152 Voir le message
    Mais j'avoue ne pas savoir comment on crée une telle table .....
    Moi non plus...même si j'imagine un peu une feuille cachée, mais quel intérêt ?

    Citation Envoyé par Pilote1152 Voir le message
    Avez-vous par ailleurs une idée sur la raison du plantage de mon code cité en début de post ? (j'ai pourtant suivi les exemples vus sur le Net pour CommandBars)
    Depuis 2017 c'est dans le ruban que cela se passe, avec des tags <command>.

    Ceci dit on ne pourrait pas récupérer un éventuel mot de passe saisi dans la fenêtre standard.
    Il faudrait annuler la fenêtre standard et programmer autre chose.
    Quand à modifier le VBA à la volée, c'est quelque peu risqué.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Arkham46 Voir le message
    Bonjour,


    Moi non plus...même si j'imagine un peu une feuille cachée, mais quel intérêt ?


    Depuis 2017 c'est dans le ruban que cela se passe, avec des tags <command>.

    Ceci dit on ne pourrait pas récupérer un éventuel mot de passe saisi dans la fenêtre standard.
    Il faudrait annuler la fenêtre standard et programmer autre chose.
    Quand à modifier le VBA à la volée, c'est quelque peu risqué.
    Bonjour Arkham46,

    Je ne comprends pas la remarque des tagscommand ; Que veux-tu dire ? mon code est dépassé ? y-a-t-il une autre façon de l'écrire?
    Sinon je devrai me résoudre à cacher la barre n°1 (je suppose l'index correct?) et afficher une barre perso sans possibilité d'accès au menu "Révision" (puis Protéger feuille).
    merci de ta réponse
    cordialement

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Oublie commandbars.
    Le ruban se personnalise en xml.
    https://silkyroad.developpez.com/excel/ruban/
    Pas facile la première fois...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Arkham46 Voir le message
    Oublie commandbars.
    Le ruban se personnalise en xml.
    https://silkyroad.developpez.com/excel/ruban/
    Pas facile la première fois...
    Merci pour le lien ..... je regarde cela et vois si je peux m'en sortir
    Bon am

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Pilote1152 Voir le message
    Merci pour le lien ..... je regarde cela et vois si je peux m'en sortir
    Bon am
    Bonjour Arkham46,

    J'ai consulté le tutoriel de silkyroad sur les modifications de ruban. Super les explications même si il faut parfois s'accrocher pour ne pas perdre pied!!!
    N'ayant pas trouvé comment on avait le pack de redistribution .Net framework pour charger l'utilitaire de personnalisation (CustomUI Editor) j'ai essayé avec la méthode manuelle soit par le bloc notes.
    J'ai d'abord eu bien du mal avec zip. En effet je comprends qu'un fichier exemple.xls doit être sauvegardée en xlsm. Ensuite il ne faut pas utiliser l'outil de compression .... mais juste ajouter .zip au fichier exemple (on obtient : exemple.xlsm.zip). On demande l'extraction totale du fichier pour obtenir un dossier exemple dans lequel j'ai cherché un bon moment le dossier .rels ! Il faut autoriser l'affichage des dossiers cachés par le panneau de config (pas précisé dans le tutoriel!). On crée dans le dossier exemple dézippé un rep CustomUI dans lequel on insère un fichier du même nom créé depuis le bloc notes (j'ai copié le code pour mettre l'onglet Révision à false - supprimer la partie suivante qui traitait de la création d'un nouvel onglet perso).
    Ensuite on ouvre le fichier .rels depuis le bloc notes et insère à la suite du code qui existe le code cité dans le tutorielsoit :
    <Relationship Id="rId10" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
    Target="/customUI/customUI.xml"/> Attention la balise de fin doit être déplacé pour figurer APRES ce code ajouté !!!!.
    Ceci étant fait on enregistre et les choses se compliquent ....
    Il est indiqué "rezipper" le dossier complet et supprimer le .zip :
    Il ne faut pas procéder comme précédemment en ajoutant juste l'extension mais "envoyer vers ... dossier compressé" pour obtenir un fichier .zip auquel on supprime cette extension .... il redevient un fichier Excel...... qui ne s'ouvre pas car msg "fichier corrompu"
    Je pensais tenir La solution mais j'ai dû rater qq chose !!!!
    Une idée de pro?
    merci pour ton aide car j'ai déjà l'impression d'avoir bien avancé ..
    Cordialement

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/08/2019, 19h28
  2. [Système]commandes linux / unix depuis java
    Par msiramy dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 20/03/2007, 11h29
  3. Réponses: 3
    Dernier message: 24/02/2007, 23h07
  4. Commande pour accéder au menu de gestion compte utilisateur?
    Par Virgile59 dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 17/10/2005, 12h00
  5. Interception des commandes in et out
    Par KDD dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 18/12/2002, 16h55

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