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 :

Contrôler le paramètre de sécurité


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut Contrôler le paramètre de sécurité
    Bonjour à toutes et à tous,

    J'ai une application sous Excel, et je voudrais contrôler le paramètre suivant : "Accès approuvé au modèle d'objets au projet vba" en VBA afin de prévenir l'utilisateur s'il faut le modifier.

    Auriez-vous une idée de comment faire ?

    D'avance merci

    Nefertari

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,

    Voici une petite fonction qui renvoit Vrai si l'option est active et Faux sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function isVBEOK() As Boolean
    Dim tst As String
    On Error GoTo Erreur
        tst = ThisWorkbook.VBProject.VBE.Version
        isVBEOK = True
    Exit Function
    Erreur:
        isVBEOK = False
    End Function
    Si l'option n'est pas activée, tu peux alors lancer la commande suivante pour afficher l'interface permettant à l'utilisateur de cocher l'option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CommandBars.FindControl(ID:=3627).Execute

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut
    Merci de ta réponse.

    Cependant, est il possible de modifier la valeur sans demander à l'utilisateur ?

    D'avance merci de ta réponse.

    Nefertari

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,

    Le problème, c'est que l'exécution du code VBA s'interrompt tant que la fenêtre contenant la case à cocher reste affichée. Il n'est donc apparemment pas possible de modifier simplement la valeur en cochant la case automatiquement.

    Pour ce faire, il faudrait passer la main à un autre processus juste avant d'afficher cette fenêtre.
    Voici une proposition, qui semble fonctionner (mais c'est sans garantie qu'elle fonctionne à chaque fois !). A toi de voir :
    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
    Sub ActiverAccesVBE()
    Dim monScript As String, Fic As String, nf As Integer
    Dim WshShell As Object
        'Ecriture du vbs
        monScript = _
            "Set WshShell = WScript.CreateObject(""WScript.Shell"")" & vbCrLf & _
            "WScript.Sleep 500" & vbCrLf & _
            "WshShell.SendKeys ""%(V)"" " & vbCrLf & _
            "WshShell.SendKeys ""{ENTER}"" " & vbCrLf & _
            "WScript.Quit 0"
     
        Fic = ThisWorkbook.Path & "\" & "sendkeys.vbs"
        nf = FreeFile
        Open Fic For Output As #nf
        Print #nf, monScript
        Close #nf
     
        'Exécution du vbs
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run Chr(34) & Fic & Chr(34)
     
        Application.CommandBars.FindControl(ID:=3627).Execute
        Kill Fic
     
    End Sub
    Le principe, c'est de passer la main à un vbs juste avant d'afficher la fenêtre. Le vbs attend quelques instants, puis envoie les combinaisons de touches qui permettent de cocher/décocher la case et de valider.
    A essayer donc et sans doute à améliorer (à bon entendeur...)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut
    Merci de ton aide, les deux solutions fonctionnent.

    Je vais voir laquelle est la plus adapter pour ma problématique.

    Par contre, j'ai encore une question comment trouver ID du contrôle qu'on veut modifier ?

    Cordialement
    Nefertari

Discussions similaires

  1. [VBA Access + Powerpoint 2003]Paramètres de sécurité
    Par Galladan dans le forum VBA Access
    Réponses: 0
    Dernier message: 16/01/2008, 10h35
  2. Réponses: 0
    Dernier message: 12/11/2007, 14h13
  3. Passage de paramètre et sécurité
    Par yazen dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/10/2007, 18h33
  4. Réponses: 8
    Dernier message: 11/02/2007, 20h44
  5. éditer les Paramètres de sécurité locaux
    Par LN(a) dans le forum Delphi
    Réponses: 1
    Dernier message: 10/01/2007, 13h04

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