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 :

Utilisation de modules macro dans des feuilles protégées par mot de passe


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    DAF
    Inscrit en
    Novembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : DAF
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2014
    Messages : 16
    Par défaut Utilisation de modules macro dans des feuilles protégées par mot de passe
    Bonjour,

    Je suis nouveau sur ce forum et plutôt débutant en VBA. Avant de poster cette demande, j'ai cherché dans le forum, mais n'ai pas trouvé de réponse à ma problématique.

    Dans le fichier ci-joint j'ai 4 feuilles, avec 4 macros dans la feuille 1 (que je vais nommer ci-dessous macro 1, 2 et 3) et 1 macro (que je vais nommer ci-dessous macro 4) dans chacune des autres feuilles.
    Ces macros sont des modules utilisant des "contrôle de formulaire"
    Dans la feuille 1 : la macro 1 sous "Case n°" me sert à sélectionner l'utilisation de la feuille 2, de la feuille 3 ou de la feuille 4
    La macro 2 sous "Number of option" me sert à sélectionner le nombre d'option (de 1 à 3) et d'afficher dans les feuilles 1 et 2 ou 3 ou 4 le nombre d'options sélectionnées
    La macro 3 sous "Qty per option" me sert à sélectionner le nombre de quantité à traiter de 1 à 6 et d'afficher dans dans les feuilles 1 et 2 ou 3 ou 4 les colonnes quantité 3 à 6
    La macro 4 est présente à l'identique dans les 4 feuilles. Elle me permet de choisir d'afficher dans chaque feuille et/ou les options 1, 2, 3 et/ou toutes.

    Il y a sûrement moyen d'améliorer le code de ces macro que j'ai faites avec mes petites connaissances en langage VBA, et avec ma logique ...

    Mon premier problème est le plus important : ce fichier est un outil destiné à des utilisateurs qui doivent saisir certains champs (cellules blanches encadrées de bleu dans la feuille 1 et cellules bleues dans les autres feuilles). Les autres cellules de la feuille contiendront des informations et/ou des formules qui sont protégées par un mot de passe (le mot de passe est "test" dans le cas présent). Pour l'instant je n'arrive pas à insérer un code qui me permette de faire fonctionner ces macros lorsque la feuille est protégée. J'ai lu pas de mal de choses sur plusieurs forum, mais je ne trouve toujours pas la solution.
    J'ai essayé de mettre dans le module "ThisWorkBook" le code suivant sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
    ws.Protect Password:="test", UserInterfaceOnly:=True
    Next ws
    End Sub
    J'ai également essayé d'intégrer le code suivant dans les modules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Case_Option_Qty()
    ActiveSheet.Unprotect "test"
    'mes instructions
    ActiveSheet.Protect "test", True, True, True
    End Sub
    et j'en passe ... mais impossible d'utiliser les macros, une fois la 1ère exécutée.

    L'un d'entre vous aurait-il une idée ?

    Je cherche également une amélioration à l'affichage des colonnes quantités 4, 5 et/ou 6 lorsqu'elles sont masquées par la macro. Je souhaiterais encadrer en gras noir les options, telles qu'elles sont présentées lorsque les 6 sont sélectionnées. Je pense que ce n'est pas trop compliqué, mais je ne sais comment faire et n'ai pas eu trop le temps de chercher.

    Merci d'avance pour vos réponses
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    1. ce code fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
    Dim ws As Worksheet
     
    For Each ws In ThisWorkbook.Worksheets
    ws.Protect Password:="test", UserInterfaceOnly:=True
    Next ws
     
    End Sub
    2. Je ne trouve pas d'instruction "UnProtect" dans la macro "Case_Option_Qty".

  3. #3
    Membre habitué
    Homme Profil pro
    DAF
    Inscrit en
    Novembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : DAF
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2014
    Messages : 16
    Par défaut
    Bonsoir Daniel C.

    Merci de votre réponse

    Cependant même en mettant votre code dans "ThisWorkbook" ça ne fonctionne toujours pas.

    Effectivement il n'y a pas de Unprotect dans le module "Case_Option_Qty()" car après plusieurs essais, je l'ai enlevé suite à des bug "erreur d'exécution '1004'"

    Je viens de réessayer en ajoutant Unprotect dans le module "Case_Option_Qty()" et votre code dans "ThisWorkbook", ça ne fonctionne pas non plus. J'ai à nouveau des erreurs "erreur d'exécution '1004'"

    Si vous voyez autre chose ?

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Cependant même en mettant votre code dans "ThisWorkbook" ça ne fonctionne toujours pas.
    Quel est le message d'erreur ?

    Quant à la macro, je n'ai pas d'erreur sur le "UnProtect".

  5. #5
    Membre habitué
    Homme Profil pro
    DAF
    Inscrit en
    Novembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : DAF
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2014
    Messages : 16
    Par défaut
    OK ça fonctionne effectivement, sauf que la feuille est déverrouillée, ce que je ne souhaite pas bien sûr.

    Et si j'écris le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Case_Option_Qty()
     
    ActiveSheet.Unprotect "test"
     
    'instruction
     
    ActiveSheet.Protect "test"
     
    End Sub
    dans ce cas la feuille est à nouveau verrouillée et les macros ne sont plus utilisables

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    dans ce cas la feuille est à nouveau verrouillée et les macros ne sont plus utilisables
    Comme tu as précisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.Protect Password:="test", UserInterfaceOnly:=True
    dans "Workbook_Open", tu ne dois pas avoir besoin de déprotéger la feuille. Par contre,si tu déprotèges la feuille il faut la re-protéger en spécifiant "UserInterfaceOnly:=True".

Discussions similaires

  1. [XL-2010] Grouper/Dégrouper dans des feuilles protégées
    Par karpi dans le forum Excel
    Réponses: 11
    Dernier message: 05/06/2015, 12h13
  2. Bouton Macro dans une feuille protégée
    Par majgi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/01/2013, 12h47
  3. [XL-2003] Lancer macro quand feuille protégée par mot de passe
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/10/2011, 12h45
  4. ouvrir automatiquement une macro protégé par mot de passe connu
    Par mapao dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2010, 14h09
  5. Réponses: 1
    Dernier message: 22/03/2007, 20h08

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