Protéger mon programme Excel

Résolu/Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 15 juil. 2015 à 14:46
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 janvier 2023 - 20 juil. 2015 à 21:37
Bonjour,

Après avoir élaboré un long et fonctionnel programme excel grâce au VBA, je souhaiterais pouvoir le protéger de manière sûre.

On peut facilement craquer un mot de passe dans les propriétés de VBA Project et encore plus un mot de passe sur un fichier excel. Mon but en fait serait que le fichier ne soit plus utilisable au bout d'un certain temps. Je voudrais imaginer un code qui se renouvelle tous les 3 mois et que moi seule connaisse. Peut-être même directement intégré au code.

Avez-vous des idées? Des suggestions?

Merci d'avance.

Cordialement.

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 janvier 2023 1 761
15 juil. 2015 à 15:07
Bonjour,

Aucune protection n'est vraiment efficace !!!

Peut-être que rendre le programme très difficile à lire peut décourager certains. Voici un exemple en hommage à Ti (Thierry Pourtier) :

Private Function iiiijqiiiijl%(iiiijjiiiijp() As Byte, iiiipiiiiipq&)
iiiijqiiiijl = iiiijjiiiijp(iiiipiiiiipq)
iiiipiiiiipq = iiiipiiiiipq + 1
End Function
Private Function iiiipliiiipj$(iiiijjiiiijp() As Byte, iiiipiiiiipq&, Optional ByVal iiiippiiiqii& = -1)
Dim iiiqiqiiiqil&
If iiiippiiiqii = -1 Then
iiiqiqiiiqil = iiiipiiiiipq: iiiippiiiqii = 0
Do While iiiijjiiiijp(iiiqiqiiiqil) <> 0 And iiiqiqiiiqil < UBound(iiiijjiiiijp)
iiiqiqiiiqil = iiiqiqiiiqil + 1
iiiippiiiqii = iiiippiiiqii + 1
Loop
End If
If iiiippiiiqii > 0 Then iiiipliiiipj = iiijlqiiijll(iiiijjiiiijp, iiiipiiiiipq, iiiippiiiqii)
If Right$(iiiipliiiipj, 1) = Chr(0) Then iiiipliiiipj = Left$(iiiipliiiipj, Len(iiiipliiiipj) - 1)
End Function 

0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 57
Modifié par Kuartz le 15/07/2015 à 15:27
Comment est-il possible que rien ne soit vraiment efficace, c'est vraiment pas terrible de la part de Microsoft...

Merci pour cet exemple mais bon, le code est selon moi toujours lisible. Donc ce n'est pas exactement ce que je cherche...

Merci quand même de l'info. Si il y a d'autres idées je suis preneur.
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
15 juil. 2015 à 15:47
Peu importe Microsoft ou autre. Rien n'est absolu coté sécurité.

La sécurité est a plusieurs niveau.
Primo, qui a accès à ton fichier ?
Distribué à des clients ou Public sur un réseau ?
Dans le premier cas, on ne veut pas donner un fichier excel.
Dans le deuxième cas, on peut gérer les droits et restreindre qui a accès au fichier.

Il peut y avoir un mot de passe pour l'ouverture du fichier, et un autre pour protéger le code.

Quel est l'importance des données ?
Un mot de passe peut être cracké, mais ce n'est pas à la porté de l'utilisateur lambada usuel. La vérité est que si quelqu'un veut vraiment ouvrir un fichier, il peut y arriver, mais il doit y mettre le temps et l'effort.

Si votre fichier est d'une importance cruciale, alors peut-etre que Excel n'était pas le bon logiciel à priori.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 57
15 juil. 2015 à 15:55
En réalité, le but est qu'après mon travail acharné sur ce programme, les autres utilisateurs ne puissent pas l'utiliser si je ne suis plus là. (Un peu égoïste ou je ne sais pas... ce que vous voudrez mais je ne souhaite pas que l'on puisse se servir de mon travail si on ne souhaite plus travailler avec moi).

Les données du fichier n'ont aucune importance. Tout ce que je souhaite, c'est que le code VBA ne marche pas si on ne remet pas le mot de passe au bout d'un certain temps. (Je souhaite quand même fournir un mdp que les utilisateur puissent jouïr de mon travail tant que je suis là). Le but est que si je pars, les gens ne puissent plus utiliser mes travaux.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 57
15 juil. 2015 à 15:57
Ou alors il faudrait inventer un petit code VBA demandant un mot de passe pour exécuter le code. On a le droit à 2 essais et le code s'efface entièrement ainsi que les modules de la feuille si on les rate. (pas de panique, je garde un original che zmoi)
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
15 juil. 2015 à 16:14
Ci-joint, un lien vers la gestion de mot de passe et utilisateur
https://www.commentcamarche.net/faq/37104-vba-excel-mot-de-passe-et-utilisateurs

J'imagine qu'il serait possible de géré une date d'expiration pour les mots de passe.

Si vous partez, pouvez-vous supprimer le fichier ?

Je te joint un lien sur un autre forum sur l'auto destruction du fichier.
https://www.excel-downloads.com/threads/auto-suppression.100449/

Autre sujet : coté propriété intellectuelle, un programme développé durant les heures de travail devrait habituellement appartenir à l'employeur, alors que si c'est développé à la maison, c'est a vous. Donc il est fortement conseillé de faire son développement à la maison.
https://fr.wikipedia.org/wiki/Droit_de_l%27informatique_en_France
Extrait : Les fichiers informatiques constitués par un employé sur son lieu de travail sont présumés avoir un caractère professionnel depuis une décision de la Cour de cassation du 18 octobre 200610. L'employeur pourra donc y accéder librement, sauf si le salarié a clairement identifié ces fichiers comme personnels.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 57
15 juil. 2015 à 16:37
Sinon simplement :

Sub Macro11()

If InputBox("Mot de passe?", "MDP") = "abcd" Then Exit Sub

Dim VBComp As Object
Dim VBComps As Object
 
Set VBComps = ActiveWorkbook.VBProject.VBComponents
 
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp
End Sub


A l'ouverture du fichier et basta. La personne qui ne sait pas va se planter de mot de passe et tout sera effacé.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 janvier 2023 1 761
15 juil. 2015 à 19:38
Re,

L'utilisateur aura toujours la possibilité d'interdire l'exécution des macros, et donc ....
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
15 juil. 2015 à 20:02
Re

Donc mettre les contrôle invisible par défaut, et la macro à l'ouverture les rend visible.
Comme ca, si on contourne la macro, tout est invisible.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 janvier 2023 1 761
15 juil. 2015 à 20:06
Re

Autrement, tu peux créer un Add-in Com ou une DLL ActiveX avec VB6
Add-in Com
DLL ActiveX
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 57
17 juil. 2015 à 08:56
OK merci de votre aide, je vais me pencher sur tout ça.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7870 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 23 janvier 2023 723
18 juil. 2015 à 08:29
Bonjour,

L'utilisateur aura toujours la possibilité d'interdire l'exécution des macros, et donc ....

Pour éviter cela:

Mettre dans ThisWorkBook:

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  'on rétabli à la fermeture
 ThisWorkbook.IsAddin = True
End Sub
Private Sub Workbook_Open()
 'empêcher l'affichage d'un classeur s'il est ouvert alors que l'exécution
'des macros est désactivée dans les options de sécurité
ThisWorkbook.IsAddin = False
End Sub


Voir ceci:

https://codes-sources.commentcamarche.net/source/53948-protection-vbaproject
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 janvier 2023 1 761
Modifié par Patrice33740 le 20/07/2015 à 21:40
Le classeur ne s'affiche pas mais il est ouvert, il suffit de passer par le VBE pour modifier le code (si besoin, après avoir exécuté la macro de GéGé)

PS : les lois du Copyright me semblent suffisantes pour assurer une protection légitime .
0