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 :

empecher ouverture feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut empecher ouverture feuille
    Bonjour,

    J'ai un classeur avec 3 feuilles. Je masque la feuille 1 et je souhaite que les personnes qui ouvrent mon classeur ne puissent pas ouvrir la feuille 1 : en passant par "Format/feuille/afficher".
    J'ai le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Visible = False
    qui masque la feuille, j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With ActiveWorkbook
     
            .UnprotectSharing '"Password"
            .Worksheets("Feuil1").Protect Contents:=True, UserInterfaceOnly:=True
            .ProtectSharing Filename:=Fichier ', Password:="Password"
    Ca empeche d'écrire dans la feuille, mais ça n'empêche pas d'ouvrir (=afficher) la feuille....

    Une idée ?
    Merci,
    A+

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Adapte la ligne comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("Feuil1").Visible = 2
    2 correspondant au VeryHidden. (-1 = Visible et 0 = Hidden)

    Si tu passes par le menu Excel tu verras qu'on te propose pas de 'démasquer' de feuille, ça oblige à passer par VBA pour l'afficher à nouveau donc généralement suffisant pour que les autres utilisateurs ne trouvent la faille (je dis ça par expérience...)

    A+

    P.S. tu peux t'amuser à utiliser ton userID pour l'afficher si c'est toi qui ouvre le fichier et la masquer si c'est un autre.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Fvandermeulen,

    Tu penses à un petit truc du style :


    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
    18
    19
    20
    Option Explicit
        'ouverture base des chemins
        ‘ field = numéro de la colonne
     
     
    'Définit l'emplacement et le nom du fichier .txt, ou va être enregistré les
    'informations d'ouverture et de fermeture.
    Private Const Chemin As String = "k:\Sauvegarde\dive.xls"
     
     
    'Evenement ouverture du classeur
    Sub Workbook_Open()
        Dim Cible As Integer
       Selection.AutoFilter Field:=1, Criteria1:=Environ("username")
        Cible = FreeFile
     
        Open Chemin For Append As #Cible
            Print #Cible, Environ("UserName"), Date
        Close #Cible
    End Sub


    Merci pour ton aide

    A+ pour de prochaines aventures.....

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    En + tu as raison....c'est pas souvent qu'ils pensent à repasser par VBA....

    Merci

  5. #5
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Oui, par exemple (bien que je n'ai pas testé), sinon voici un code que j'ai utilisé,
    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
    Option Explicit
    Const usrPerso = "MonUser" 'remplacer MonUser par ton user
    Private Sub Workbook_Open()
     
    If LCase(Environ("UserName")) <> LCase(usrPerso) Then
            Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
            ActiveWindow.DisplayHeadings = False 'Dans mon cas je masque les N° ligne et noms colonnes
            Sheets("Feuil1").Select
            Sheets("Parametres").Visible = 2
    Else:
            Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
            ActiveWindow.DisplayHeadings = True
            Sheets("Feuil1").Select
            Sheets("Parametres").Visible = -1
    End If
     
    End Sub
    Si tu verrouilles ton code VBA, tu es tranquille, il faut déjà tomber sur un utilisateur qui pensera a utiliser un Cracker (donc, au pire, il s'y connait un peut et mettra pas le bord.. dans ton fichier, toujours par expérience ) et ça évite de devoir protéger les feuilles ce qui personnellement me gêne.

    A+

    Edit: Encore un petit conseil, remets ta feuille en verryhidden à la fermeture du fichier ça évite qu'elle soit visible si ils désactivent leurs macros (encore de l'expérience...et pourtant je suis pas si vieux )

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Trop fort, j'avais pas pensé au petit malin qui pourrait ouvrir sans activer les macros...bien vu, merci

    Pour ton code, il fonctionne super-bien !!!

    Le mien était extrait d'une de mes macros qui permettait d'ouvrir un classeur, d'indiquer dans un fichier qui l'avait ouvert, et de trier automatiquement sur la première colonne et de ne "montrer" que les éléments qui concernait la personne.

    Merci,

    A+ pour de prochaines aventures

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] ouverture feuille excel à partir d'un userform
    Par mdambreville dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/05/2009, 17h55
  2. commande ouverture feuille dans un JTree
    Par barbiche dans le forum Composants
    Réponses: 3
    Dernier message: 14/08/2007, 10h00
  3. [VBA EXCEL]Ouverture feuille excel dans fenêtre maximale
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/04/2007, 17h51
  4. [VBA-E]Lancement macro ouverture Feuille
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 08/06/2006, 20h31
  5. [VBA-E2003] Empecher quitter feuille ou fichier ?
    Par Slumpy dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 15/04/2006, 16h07

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