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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    60
    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 : 60
    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 expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    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
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    60
    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 : 60
    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 expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    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
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    60
    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 : 60
    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
    Expert confirmé
    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
    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é.

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