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 :

Empêcher l'ouverture en Mode Protégé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut Empêcher l'ouverture en Mode Protégé
    Bonjour,

    Voila mon problème :
    J'ai un fichier Excel 2010 qui s'ouvre avec exécution de macro automatique me permettant différentes vérifications et verrouillant l'accès au fichier dans certaines conditions (date d'évaluation dépassée, ...)
    Cela était intéressant jusqu'alors, mais la nouvelle possibilité d'EXCEL d'ouverture en Mode protégé permet à tout utilisateur l'ouverture du fichier en "shuntant" la macro d'ouverture Workbook_Open() pour pouvoir utiliser pleinement le fichier (avec les macros) ; grâce au fameux bouton 'Activer la modification' ; qui met la macro d'ouverture en défaut et qui laisse ouvert le fichier lorsqu'on clic sur 'Fin' sur la fenêtre d'erreur qui apparait.

    Je souhaiterai éviter que ce fichier puisse s'ouvrir ou reste ouvert lorsqu'on l'ouvre en mode protégé. J'ai essayé plusieurs choses, mais les fonctions qui me permettent de fermer le fichier ne marche pas.

    Par exemple dans la macro d'ouverture :
    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
    21
    22
    23
    24
    25
    26
    27
     
    Private Sub Workbook_Open()
     
    On Error GoTo ligne_sortie
     
        For Each cb In Application.CommandBars
            cb.Enabled = False
        Next
     
        s = ActiveWorkbook.BuiltinDocumentProperties(11)
        If Format(Now() - s, "#") > 30 Then
            If MsgBox("Version d'évaluation dépassée de : " & Format((Now() - s - 30), "#") & " jours.", vbYesNo) = vbYes Then
                ActiveWorkbook.Close SaveChanges:=False
            Else
                If InputBox("cléf d'activation ? ") <> "xxxxx" Then ActiveWorkbook.Close SaveChanges:=False
            End If
        End If
    Exit Sub
     
    ligne_sortie:
    If Application.ProtectedViewWindows.Count > 0 Then
        Set wbProtected = Application.ProtectedViewWindows(1).Workbook
        wbProtected.Close SaveChanges:=False          'ne ferme pas le fichier !!! pas de solution pour empecher l'ouverture en mode protégé
        'ActiveWorkbook.Close SaveChanges:=False    'ne marche pas, le workbook n'est pas encore actif
    End If
     
    End Sub
    Avez vous une solution à me proposer ?

    Merci de votre aide.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    ... en "shuntant" la macro d'ouverture Workbook_Open()...
    à moins que je ne comprenne pas mais si tu protèges le projet, click droit sur le "VbaProject" et voir image ci-dessous
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 51
    Par défaut
    Créer un feuille vierge avec l'attribut visble à xlSheetVisible
    Met l'attribut visible de toutes les autres feuilles à xlSheetVeryHidden

    Dans ta macro workbook_open
    modifie les attributs visible de chaque feuille de manière à rendre visible les feuilles utilisées et invisible la feuille vierge.

    dans la macro workbook_close
    fait l'inverse.

    Met un mot de passe sur ton projet VBA.

    Ainsi un utilisateur qui n'execute pas la macro d'ouverture ne pourra utiliser le fichier.

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut
    Bonjour et merci pour votre aide.

    Le code est bien entendu protégé par mot de passe, cela n'apporte pas de résolution à mon problème.

    J'ai réalisé les modifications avec la création d'une feuille et le code pour les rendre visibles et invisibles.

    J'obtiens un problème similaire, avec une erreur d'exécution 1004 sur le code de la macro d'ouverture. Celle-ci ne provient plus de l'objet ActiveWorkbook (du moins pas encore, parce que l'erreur survient avant), mais de l'objet WorkSheets. Tout se passe comme-ci le fichier n'était pas encore ouvert et donc les objets qu'il contient pas encore actifs pour être appelés dans du code.

    Nom : erreur 1004.jpg
Affichages : 1448
Taille : 17,3 Ko


    ... et lorsqu'il apparait la case FIN dans le formulaire d'erreur, on peu accéder au fichier en cliquant dessus puisque le code est arrêté. Le problème vient de là. Il ne faudrait pas pouvoir arrêter le code et rester dans le fichier qui devient alors utilisable. (A le suite de cette erreur et du clic sur la case FIN, toutes les feuilles sont affichées)

    le code d'ouverture auto :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Private Sub Workbook_Open()
     
    'On Error GoTo ligne_sortie
     
    Sheets("adcBD").Visible = xlSheetVisible
    Sheets("ADC").Visible = xlSheetVisible
    Sheets("Feuil1").Visible = xlSheetVeryHidden
     
        For Each cb In Application.CommandBars
            cb.Enabled = False
        Next
        'Application.CommandBars("Toolbar List").Enabled = False
        'Application.CommandBars.DisableCustomize = True
        'Stop
        s = ActiveWorkbook.BuiltinDocumentProperties(11) 
        If Format(Now() - s, "#") > 30Then
            If MsgBox("Version d'évaluation dépassée de : " & Format((Now() - s - 30), "#") & " jours.", vbYesNo) = vbYes Then
                ActiveWorkbook.Close SaveChanges:=False
            Else
                If InputBox("cléf d'activation ? ") <> "xxxx" Then ActiveWorkbook.Close SaveChanges:=False
            End If
        End If
    Exit Sub
     
    ligne_sortie:
    If Application.ProtectedViewWindows.Count > 0 Then
        Set wbProtected = Application.ProtectedViewWindows(1).Workbook
        wbProtected.Close SaveChanges:=False        'ne ferme pas le fichier !!! pas de solution pour empecher l'ouverture en mode protégé
        'ActiveWorkbook.Close SaveChanges:=False    'ne marche pas
    End If
     
    End Sub
    la macro de fermeture :
    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
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ScreenUpdating = False
    DelPopupMenu
        For Each cb In Application.CommandBars
            cb.Enabled = True
        Next
        Sheets("Feuil1").Visible = xlSheetVisible
        Sheets("adcBD").Visible = xlSheetVeryHidden
        Sheets("ADC").Visible = xlSheetVeryHidden
     
        Application.DisplayAlerts = False
        ActiveWorkbook.Save
        Application.Quit
        Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    bonjour,
    et si essayes comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("adcBD").Visible = True
    Sheets("ADC").Visible = True
    Sheets("Feuil1").Visible = False
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Candidat au Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut
    Oui Casefayere, j'avais essayé ; même punition.

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    il est 9.30 H mais je ne suis pas encore réveillé (eh oui, pas de boulot le vendredi), je réfléchirai quand j'aurai récupéré mon cerveau, j'ai regardé sous le lit mais il n'y était pas
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. Appel d'interruption DOS ou BIOS sous Windows (mode protégé)
    Par SteelBox dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/04/2004, 11h30
  2. Passage en mode protégé avec DPMI
    Par Hell_Hibou dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 09/09/2003, 20h04
  3. Comment empêcher l'ouverture d'un TPopupMenu !?
    Par Lung dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/08/2003, 12h47
  4. Les INT en mode protégé
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 05/12/2002, 17h13
  5. Mode protégé pour un OS
    Par Ninkosen dans le forum Programmation d'OS
    Réponses: 2
    Dernier message: 25/11/2002, 14h46

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