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 :

Accès au projet VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 109
    Par défaut Accès au projet VBA
    Bonjour à tous,
    Je possède un fichier avec plusieurs Userform. Lors de l'ouverture du fichier, je lance le code suivant sur Workbook.Open :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.VBProject.VBComponents("UserForm2").Activate
    Sans ce petit bout de code mon fichier plante lors de l'ouverture du UserForm (ne me demandez pas pourquoi ça fait plus d'un an que je cherche ...).
    Depuis j'ai rajouté du code et j'ai mis en place un mot de passe sur le projet VBA.

    Problème : Avec le mot de passe, ce bout de code refuse de se lancer ... Il marque :
    Erreur d'exécution '50289':
    Impossible d'effectuer cette opération tant que le projet est protégé.
    J'ai testé le code de Frédéric SIGONNEAU pour retiré le mot de passe du projet. Cela fonctionne sauf en le réactivant, car le code reste visible pour l'utilisateur.
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
     
      Dim vbProj As Object
      Set vbProj = WB.VBProject
      Password = "mdp"
     
      If vbProj.Protection <> 1 Then Exit Sub
     
      Set Application.VBE.ActiveVBProject = vbProj
     
      SendKeys Password & "~~"
      Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
     
    End Sub
     
    Sub ProtectVBProject(WB As Workbook, ByVal Password As String)
     
      Dim vbProj As Object
      Set vbProj = WB.VBProject
      Password = "mdp"
     
      If vbProj.Protection = 1 Then Exit Sub
     
      Set Application.VBE.ActiveVBProject = vbProj
     
      SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
    Password & "~"
     
      Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
      WB.Save
     
    End Sub
     
    Sub Protect()
      ProtectVBProject ThisWorkbook, "VBAProject"
      DoEvents
    End Sub
     
    Sub Unprotect()
      UnprotectVBProject ThisWorkbook, "VBAProject"
      DoEvents
    End Sub
    Ce que je souhaiterais faire c'est désactiver le mot de passe, lancer mon code et réactiver le mot de passe sans qu'après l'utilisateur n'est accès au projet VBA.

    Des idées ? Merci par avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour, as-tu essayé:

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 109
    Par défaut
    Oui cela viens après dans mon code et le formulaire se lance bien si le bout de code ci-dessus est exécuter.
    Sinon mon formulaire monte sans qu'aucune textbox ne soit renseigné et affiche qu'Excel à rencontré un problème et dois fermer blablabla voulez vous récupérez les données et ainsi de suite.

    Petit up.
    Comment protéger le code contre la lecture en cours d'exécution (faisable grâce au code ci-dessus) tout en l’empêchant d'être lu directement.
    Sinon la croix est cochée, et le mot de passe est enregistré (jusque là ce que je souhaitais).
    Je ne veux simplement pas que le code puisse être lu ou modifié en cours.

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Bonjour,

    Un mot de passe n'arrêtera jamais quelqu'un qui veut vraiment lire le code.

    Il suffit de passer en bruit de force pour déprotéger ton code.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Nikodemus Je possède un fichier avec plusieurs Userform. Lors de l'ouverture du fichier, je lance le code suivant sur Workbook.Open :
    ThisWorkbook.VBProject.VBComponents("UserForm2").Activate
    A tout hasard, essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Load UserForm2
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 109
    Par défaut
    Les utilisateurs ne s'y connaissent pas assez pour allez volontairement cracker le mot de passe du projet, mais si le code reste à dispo j'en connais certains qui en profiteraient.

    Concernant le
    malheureusement ça ne suffit pas. Je dois apparemment obligatoirement lancer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.VBProject.VBComponents("UserForm2").Activate
    En gros avec mon projet actuel, sans protection ça fonctionne, et avec protection ça ne marche plus car la ligne si dessus doit s'exécuter sans protection.

Discussions similaires

  1. Approuver Accès au projet VBA dans auto_open
    Par hartarus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2015, 08h32
  2. Accès au projet vba non fiable
    Par bastien dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2013, 23h34
  3. Approuver Accès au projet VBA dans auto_open
    Par infobulle dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/10/2012, 22h01
  4. Approuver Accès au projet VBA dans auto_open
    Par samtous dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/12/2011, 12h28
  5. [XL-2007] Userform non-modal & Accès au modèle objet du projet VBA
    Par JackIsJack dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/06/2010, 10h23

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