Sécurisation de mes codes (Userform, modules, macros) sous Excel 2007

Bonjour tout le monde.

Je crée des projets EXCEL VBA pour mes propres besoins (Températures, Humidités et d'autres paramètres METEO, étant en retraite depuis des années), et ja fais ça par plaisir.

Donc je dispose de grandes quantités de code (USF, Modules, Macros etc et je voudrais les sécuriser tout en permettant toutefois d'exécuter les projets. En d'autres termes, je souhaiterais limiter l'accès à mes projets, à savoir l'éxécution mais pas l'affichage des codes, à d'autres personnes.

Pour celà, on m' a orienté vers les macros complémentaires, ce que j'ai fait en téléchargeant le pack des fonctions xlp, à partir de votre site et que j'ai installer dans un répertoire de mon PC en procédant également à l'installation dans compléments excel.

Je vous informe également que mes projets sont enregistrés en .xlsm (Avec prise en charge des macros).

Messieurs, j'ai vraiment besoin de votre précieuse aide pour la réalisation de ces tâches, en vous remerciant d'avance.

Messieurs, je reste à votre disposition pour vous fournir plus de renseignements.

Salutations

Said Azeklou

Bonjour azekazek, le forum,

Dans le menu de VBA : Onglet Outils > Propriétés de VBA Project > Protection : Entrez un Mot de Passe.

image

Cordialement,

Bjr.

Mais une fois verrouillé, le projet ne peut être exécuté qu'une fois déverrouillé, sous entendu qu'il faut divulguer le mot de passe.

Re,

J'avais compris que tu souhaitais empêcher l'accès aux codes de ton projet et permettre uniquement son utilisation....

je souhaiterais limiter l'accès à mes projets, à savoir l'éxécution mais pas l'affichage des codes, à d'autres personnes

13classeur1.xlsm (16.94 Ko)

Cordialement,

Merci quand même cher ami.

Bonjour le fil

Azekazek, que signifie "merci quand même" !?

La solution donnée par xorsankukai fonctionne, c'est vous qui ne savez pas la mettre en pratique ou ne vous exprimez pas correctement

A bon entendeur

Bonsoir Bruno.

Je voulais dire que cette solution de verrouillage ne me permet pas d'exécuter le projet, et si quelqu'un veut l'exécuter, je serais dans l'obligation

de lui fournir le mot de passe et donc il pourra accéder à mes codes.

Salutations

Re,

Je voulais dire que vous ne savez pas utiliser VBA project car cela n'empêche pas l'utilisation du code

Merci de joindre votre fichier que l'on puisse vous le démontrer

A+

Rebonjour Bruno.

Ci-joints les fichiers constituant mon projet EXCEL VBA:

1 Userform

2 Modules

Salutations.

Bonsoir,

Je ne vais pas pouvoir vous aider dans vos recherches, en revanche, je souhaitais simplement préciser que pour ma part, je n'ai jamais trouvé un fichier Excel dont le code soit vraiment protégé. S'il existe une méthode, même les logiciels payants ne l'utilisent pas.

N'ayant pas trouvé de solution, j'ai donc arrêté de protéger mes fichiers, mais je suis très curieux de voir les réponses sur ce fil.

Bonne soirée.

Re,

@azekazek, je comprends mieux, le code est bourré d'anomalies ce qui doit provoquer des message du style

image

Commencez par déclarer toutes vos variables, corrigez le code et ensuite vous pourrez le protéger !

@Le Drosophile, pour la protection demande des explications à Sébastien, il t'expliquera que ça existe

@+

Bonjour,

S'il y a une discussion sur la protection, je veux bien être inclu dans la boucle... C'est toujours intéressant de savoir.

Salut JoyeuxNoel

Sur ce site, Sébastien en parle "un peu" avec de l'obfuscation
https://www.excel-pratique.com/fr/astuces_vba/mot-de-passe-vba

@+

Bonjour Azekazek, Le Forum,

je souhaitais simplement préciser que pour ma part, je n'ai jamais trouvé un fichier Excel dont le code soit vraiment protégé.

En effet il existe la "Dés-obfuscation" qui consiste à lister toutes les variables du projet et à les remplacer par une liste de variables déjà définies.

Maintenant le système de l'obfuscation tout comme la protection par mot de passe vont rebuter les moins persévérants.

En effet il existe la "Dés-obfuscation" qui consiste à lister toutes les variables du projet et à les remplacer par une liste de variables déjà définies.

Ctrl+F ... et quelques minutes j'imagine.

Edit : J'ai vu sur un autre forum la solution de Theze qui consiste à identifier les variables avec des noms très proches (ex : llllllllllllll et lllllllllllllll. On peut toujours ""Dés-obfuscer" mais c'est déjà beaucoup plus compliqué.

Avec l'aide du forum d'Excel Pratique, J'ai déjà pu écrire des macros qui s'écrivent elle-mêmes. Aussi, j'imagine que si Excel parvient à détecter qu'il n'a pas été ouvert correctement (ça je ne sais pas si c'est possible), alors la version utilisée exécute une macro qui modifie ou supprime le code VBA (mais peut-être qu'en désactivant les macros avant ouverture, cette technique ne fonctionnerait pas).

A un moment j'avais pensé aussi à lier mon fichier Excel à un autre fichier contenant une "clé" (l'ouverture sans ce fichier ou sans activer les macros, ou en modifiant quelque chose engendrerait la suppression du fichier ou quelque chose du genre).

Bonne soirée !

Bonjour à tous,

J'ai vu sur un autre forum la solution de Theze qui consiste à identifier les variables avec des noms très proches (ex : llllllllllllll et lllllllllllllll. On peut toujours ""Dés-obfuscer" mais c'est déjà beaucoup plus compliqué

J'ai déjà vu ce type de codage variable.

Il est vrai que c'est énervant (surtout pour les yeux) pour suivre le code.

Mais il suffit par n'importe quel éditeur (VBA ou texte) d'utiliser Recherche et Remplacer.

Exemple: IIII sera remplacé par I4 et IIIIII par I6.

Par contre dans l'éditeur, parfois selon la police utilisée, il est difficile de reconnaître le L minuscule et le 1.

Donc un mélange des 2 en plusieurs fois dans une même variable complique la Recherche.

j'avais pensé aussi à lier mon fichier Excel à un autre fichier contenant une "clé"

Bien sur, c'est possible mais comme c'est le code VBA qui a la main. En ôtant la ligne de code avec la référence au fichier. On contourne ce dernier.

A nouveau,

On peut considérer un "Hacker" de code comme un "Voleur".

Et comme une maison ou tout bien que l'on veut protéger. L'important est de ralentir la progression de l'intrus.

Plus il est découragé et perds du temps. Moins il sera persévérera dans son action.

Une solution serait d'employer plusieurs techniques. Mots de passe, obfuscation...

Et d'intégrer plusieurs autres modules, modules de classe y compris , le tout obfusqué qui n'ont rien à voir avec le déroulement du programme.

Le temps perdu à chercher quels sont les modules qui sont nécessaires découragera un bon nombre d'intrus.

Une autre est de réserver certaines parties du programme à un fichier de macro externe situé sur un serveur qui a pour but de renvoyer certains calculs

nécessaires au programme selon les données disparates envoyées. Et là, cela demande que l'utilisateur soit toujours connecté pour se servir de son classeur.

Vous tenez quelques chose là...

Un petit concours de qui crée le classeur le mieux protégé !

Mais comme jury faut trouver un excellent hacker

Bonjour à tous,

Juste une réflexion à 2 balles mais surtout sans vouloir froisser personne et sans polémique : c'est curieux de lire, sur un forum de partage, une discussion sur "comment ne pas partager"...

Mais je n'ai probablement rien compris

Pierre

Bonsoir à tous,

@Pierrep56,

La sécurisation, objet de la demande n'a pas pour but de ne pas partager des lignes de codes ou autres.

Mais d'empêcher de rendre soit malencontreusement (bidouille d'un utilisateur) soit par volonté de modifier des programmes qui peuvent nuire ensuite à leur bonne exécution.

Certains membres utilisent des programmes dans le cadre professionnel. Ils peuvent avoir besoin de prévention et de sécurisation.

Rechercher des sujets similaires à "securisation mes codes userform modules macros 2007"