XL 2021 Comment protéger le VBE Project par mot de passe en utilisant du VBA ?

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bonjour,
il n'existe pas de moyen efficace pour protéger son code, bien que la demande soit tout à fait légitime. même le dot.net est decompilable.

maintenant tu peux télécharger et installer Visual studio 2022 community et créer une librairie vb.net. vs community est. gratuit

tu pourras y injecté toutes tes méthode VBA. attention les formulaires ne passeront pas sous excel , mais tu pourras utiliser ta librairie avec excel.

donc te supprime les méthodes que tu utilisais en VBA une instance de la librairie comme si tu avais encapsulé dans un module de classe.

tu protège to projet VBA comme d'hab. et comme ta librairie est compilé te réduit les risques.

je vois pas l'intérêt de déprotéger le code par programme.
 
Bonjour @Dudu2
la gestion de protection est IDE et encore heureux(il existe pas de classeur.vbproject.unprotect"motdepasse")
cela dit si tu regarde dans mon calendar tu y trouvera l'appel de l'input du mot de passe
un wscriptshell.sendkeys precall fonctionnera
pour la protection c'est un peu pareil mais c'est bancale dans le sens ou tans que le project est ouvert le code dans le vbe se voit
il est donc impossible de determiner si le ".protection" du vbproject est valide
cela serait utimle a la fin d'un travail avant d'enregistrer et fermer le fichier Excel
sinon pendant utilisation c'est pedaler dans la choucroute puisque le vbe reste visible
 
j'ai bloqué le "ENTER" qui normalement valide pour que tu puisse voir
VB:
Sub ProtectVBProject()
    Dim sh As Object
    Set sh = CreateObject("WScript.Shell")
 Application.VBE.MainWindow.Visible = True
    Application.VBE.MainWindow.SetFocus
   With sh
.SendKeys "{TAB 9}"
.SendKeys "{RIGHT}"
.SendKeys "{TAB}"
.SendKeys " "
.SendKeys "{TAB}"
.SendKeys "motdepasse"
.SendKeys "{TAB}"
.SendKeys "motdepasse"
.SendKeys "{TAB}"
DoEvents
'.SendKeys "{Enter}"
End With
      Set Application.VBE.ActiveVBProject = ThisWorkbook.VBProject
        Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
        Application.Wait TimeValue(Now + 0.00001)
        DoEvents
  DoEvents
ThisWorkbook.Save
End Sub
 
C'est vraiment un lacune qu'il n'y ait rien de prévu par VBA
Même si je t'ai donné un exemple dans mon post precedent

Depuis quand c'est une lacune dene pas laisser un fichier lancer une telle requête éventuellement sur un de tes fichiers puis auto détruire son propre code.pour que tu ne puisse plus avoir la possibilité de corriger ou mettre à jours le code de ton applicatif
par ce que ça existe et pour être honnête avec toi je sais faire

Non justement si la protection du projet vba n'est que IDE c'est bien pour une raison qui est simple vu le contexte insécuritaire dans lequel travaille Excel
La raison est simple : permettre uniquement à l'utilisateur de décider manuellement de bloquer l'accès au code.
il est ainsi en pleine responsabilité de l'éventuelle perte du mot de passe ou dégradation dans l'applicatif qu'il a développé ou utilise sur son PC
On parle la aussi d'exécution coté client pour les app web par exemple

Des fois tu as des raisonnements surprenants toi des fois
j'ai peur que tu n'est passez poussé ta refection sur ce sujet qui est quand même sensible
 
J'ai vu ce que ChatGPT écrit la-dessus et qui est de la même veine.

Mon problème est le suivant:
Un de mes compléments doit préparer un classeur quelconque à être envoyé à un tiers pour revue.
Je passe sur la copie et protection des feuilles copiées, la MFC pour voir les changements, etc... ce n'est pas le sujet.

Les formules (résultat d'un travail à protéger) doivent être non-modifiables et non-visibles pour le tiers.
Alors j'ai protégé la feuille, verrouillé les cellules à formules et EnableSelection = xlUnlockedCells pour ne pas afficher les formules en barre de formule.

Hélas, si une personne connaissant le VBA écrit une petite fonction VBA qui fait EnableSelection = xlNoRestrictions, même feuille protégée (EnableSelection n'est pas sensible à la protection), tout tombe à l'eau, les formules deviennent visibles => nécessité de protéger le projet VBE via macro du complément pour empêcher le tiers à écrire une fonction VBA.

Il n'y a rien là-dedans d'original et non conformes à la logique !
 
Dernière édition:
en fait rien interdit l'utilisateur de créer une Macro dans un autre fichier.

si ton client achète une prestation il ne s'intéressera pas à déplomber ton fichier.

Microsoft a trouvé la bonne solution avec sa redevance 365

personnellement je n'ai jamais essayé de déplomber un fichier excel. et pourtant des apprentis développeurs ils y en avait dans les boîtes ou j'ai servi.

j'ai même à plusieurs reprises refusé de me soumettre à ce genre de pratique.
 
Dernière édition:
tu vas dans thisworkbook et tu utilises tous les évènements du classeur pour masquer tes formule
open, change, sélection change etc.

bien sur tu me diras et si il n'accepte pas les macros

en fait il y a plein de faut amis et de vrais fausse solution !

le verrouillage de ton application ne doit pas surpasser la convoitise quelle procure.

personnellement je ne suis pas submergé par les mails de remerciement pour toutes les sources que j'ai publié gratuitement.
 
Dernière édition:
Bonjour,
Du coup, si je bloque le Selection_Change(), ça se justifie davantage de protéger le code.
L'inconvénient c'est effectivement un xlsm au lieu d'un xlsx.
Au final je vais laisser tomber car trop de manips pour tenter d'éviter l'inévitable car tout est craquable.
Merci en tous cas pour les suggestions.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
652
Réponses
7
Affichages
225
Réponses
37
Affichages
1 K
Réponses
4
Affichages
223
Retour