none
Comment gérer les sécurité Excel RRS feed

  • Question

  • Bonjour à tous,

    J'ai deux problème pour une petite application VBA sous Excel 2007.
    Dans cette application, toutes mes feuilles sont verouillées et cachées (sauf une). L'idée est que l'utilisateur ne puisse modifier que les cellules prévues à cet effet. Lorsque que mon code VBA doit modifier une feuille, je la déverouille chaque fois le temps de la procédure et puis la reverouille à la fin de la procédure. Le classeur est également protégé pour que l'utilisateur ne puisse pas afficher les feuilles.

    Mes problèmes sont les suivants.

    Lorsque l'utilisateur ouvre mon fichier pour la première fois, il ne peut pas activer les macros (il semble que le fait de verouiller le classeur empêche cette fonctionnalité).

    Dans mes feuilles cachées, certaines contiennent des requêtes web. Je ne peux pas lancer mes procédure sans que ces requête web ne s'éffectuent. Seulement, je ne sais pas comment vérifier si l'utilisateur a autoriser le contenu externe ou non (je ne trouve pas la propriété : ni dans Application, ni dans Workbook, ni dans Worksheet). Tout cela est géré par le centre de confidentialité de Excel mais je ne vois aucun moyen d'y accéder (ne fut ce que pour lecture uniquement).

    Il y a aussi un dernier petit problème concernant le verouillage des feuilles. A la fermeture du classeurs, j'éxécute le code suivant :

    Extrait de code

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.ProtectStructure = False Then
        Sheets("Intro").Visible = True ' on réaffiche la page d'intro pour prochaine ouverture
            For Each Sh In Sheets 'pour toutes les feuilles...
                If Sh.Index <> Sheets("Intro").Index Then 'sauf la page d'intro
                    Sh.EnableSelection = xlNoSelection 'aucune sélection possible
                    Sh.Protect "ici_mon_mot_de_passe", True, True, True, True 'verouiller la feuille
                    Sh.Visible = False 'masquer la feuille
                End If
            Next Sh
        'ThisWorkbook.Protect "mon_password", True 'annulé car pose problème pour activer les macros
    End If
    Sheets("Intro").Cells(1, 1).Select 'sélectionne la cellule 1 de la page intro (pseudo_recentrage de la page)
    ThisWorkbook.Close True 'ferme définitivement le classeur en tenant compte de ces modif
    End Sub


    J'espère que j'ai été claire dans ma demande... Merci d'avance pour votre aide
    lundi 19 novembre 2007 20:51

Toutes les réponses