Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2021Comment protéger le VBE Project par mot de passe en utilisant du VBA ?
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 @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
Bonjour @dysorthographie, @patricktoulon,
Merci pour vos retours. Je vais tenter d'utiliser l'interface GUI d'Excel Propriétés du projet avec des SendKeys et MouseEvents. Le problème principal est d'être sûr d'être positionné sur le bon projet à cause de la présence des AddIns.
C'est vraiment un lacune qu'il n'y ait rien de prévu par VBA.
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
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 !
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.
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