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 :

Si le fichier n'est pas en Lecture Seule, ouvrir un Userform [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut Si le fichier n'est pas en Lecture Seule, ouvrir un Userform
    Bonjour le forum,

    A l'ouverture de mon fichier, il y a une Msg Box qui demande à l'utilisateur s'il veut se mettre en lecture seule ou non.
    S'il dit oui, pas de soucis, le fichier s'ouvre simplement en lecture seule, et tout fonctionne.

    En revanche, s'il dit non, j'aimerai qu'un Userform s'affiche automatiquement.

    Mon code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
     
    If MsgBox("Entrer en lecture seule? Vous aurez tout de même accès aux filtres", 4) = 6 Then _
    Workbooks.Open Me.Path & "\" & Me.Name, ReadOnly:=True
     
    If ThisWorbook.ReadOnly = False Then
    UserForm_RULES.Show
    End If
     
    End Sub
    quand je clique sur "Non" (donc ne pas se mettre en lecture seule), un message d'erreur s'affiche
    Erreur d'exécution 424
    La ligne 6 If ThisWorbook.ReadOnly = False Then s'illumine alors.

    Quelqu'un aurait-il une solution ?

    Merci d'avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Le code que tu proposes pique un peu les yeux : dans l'évènement d'ouverture d'un fichier, tu essayes de le ré-ouvrir sans l'avoir fermé ???
    Je ne sais pas si ça peut fonctionner mais c'est vraiment chercher les ennuis.

    Il serait plus propre de mettre ce fichier en "Lecture seule recommandée".
    C'est une option qui se trouve dans Enregistrer sous > Outils > Options générales > Lecture seule recommandée.
    Ainsi, quand un utilisateur ouvrira ton fichier, Excel lui demandera s'il veut l'ouvrir en lecture seule, conseil qu'il pourra refuser s'il le souhaite.

    Ton code serait alors beaucoup plus simple (et plus propre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        If Not ThisWorbook.ReadOnly Then UserForm_RULES.Show
    End Sub

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Hm, j'ai trouvé ce code sans explication sur Internet, et il répondait à mon besoin primaire.
    avant d'essayer d'ajouter cette histoire d'userform, il fonctionnait très bien!

    En fait, j'ai 3 profils types:
    - Des personnes qui DOIVENT être en lecture seule, je ne veux pas que ces personnes puissent enlever ce mode
    - Des CM (Qui peuvent débloquer la lecture seule)
    - Les Admins (Qui peuvent aussi débloquer la lecture seule)

    En réalité, j'ai besoin que le code fonctionne comme cela:

    La personne indique qu'elle veut être en lecture seule --> Pas de soucis, le fichier s'ouvre en lecture seule. Pas besoin d'Userform.
    La personne indique qu'elle ne veut pas être en lecture seule --> L'userform_RULES s'ouvre. Ici, la personne va devoir sélectionner son rôle (CM ou Admin) et saisir son mot de passe. A partir de là, le fichier se paramètre correctement en fonction du rôle de la personne (Affichage des feuilles utiles/Débloquer certaines feuilles/Laisser accès à certains boutons de macros ..)
    Si la personne arrive sur l'Userform RULES sans avoir de droit d'acces (Pas de rôle et de MDP qui lui ont été confiés), le fichier sera alors fermé, avec une msg box lui demandant de réouvrir le fichier, mais en cliquant sur lecture seule.

    Je ne veux pas que mon utilisateur puisse "lambda" puisse retirer la lecture seule à l'ouverture du fichier.

    Voilà, j'espère que c'est clair .

    Tout l'userform RULES est paramétré, je n'ai pas de soucis avec, mais effectivement, je pense que ma façon de faire n'est clairement pas la meilleure.

    Au début, j'avais essayé le code ci-dessous, mais il ne fonctionne pas ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
     
    If MsgBox("Entrer en lecture seule? Vous aurez tout de même accès aux filtres", 4) = 6 Then _
    ThisWorbook.ReadOnly = True
     
    If ThisWorbook.ReadOnly = False Then
    UserForm_RULES.Show
    End If
     
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    On l'a répété des milliers de fois sur ce forum : gérer la sécurisation d'un accès par VBA, ça n'est pas une bonne idée.
    VBA est un véritable gruyère pour la sécurité et combler les brèches conduit généralement à bâtir des usines à gaz lourdes et imparfaites.

    Je vais te donner un exemple pour ton application : que se passe-t-il si à l'ouverture du fichier, une personne lambda n'appuie pas sur le bouton "activer les macros" ?
    C'est bien sûr une question de pure formalité dont je connais la réponse : toute ta protection vole en éclat.
    Sans compter que faire saisir un mot de passe par un UserForm, c'est un peu comme mettre une grosse serrure sur la porte et laisser la clé sous le paillasson.

    Bref, je te conseille fortement pour faire ce que tu souhaites d'utiliser les options standard d'Excel.
    Dans la fenêtre que je t'ai indiquée dans mon précédent message, il y a aussi un option pour ajouter un mot de passe au fichier pour qu'il puisse être ouvert en lecture seule ou en lecture/écriture, ce qui correspond semble-t-il à ce que tu veux faire.

    Il y a aussi la possibilité de protéger chaque feuille individuellement.

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

Discussions similaires

  1. Comment savoir si un fichier Excel est ouvert en lecture seul
    Par patate5555 dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/06/2007, 13h53
  2. Réponses: 6
    Dernier message: 12/02/2007, 19h24
  3. Tester que le fichier n'est pas un fichier binaire
    Par fedfil dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/10/2005, 17h29
  4. Réponses: 18
    Dernier message: 30/06/2005, 13h30

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