Fiabilité protection Excel - Protéger efficacement son travl

Bonjour,

Je développe sur Excel pas mal de petit calculateur et je souhaiterai protéger efficacement mon travail. J'avais cru comprendre que les dernières versions d'excel (j'utilise office 2016) permettaient une protection efficace. A la lecture de certain forum, j'ai un gros doute. Dois je me résoudre à abandonner l'idée de protéger mon travail contre la copie ou existe t'il une façon efficace à 100%.

Quelle stratégie adopter?

Ci joint un fichier simple en .xlsm ou j'ai mis 3 mot de passes.

Un premier pour verrouiller l'accès aux feuilles et aux formules présentes dans les feuilles (je l'ai craqué en 1 mn via fichier zip)

Un second mon de passe pour verrouiller le classeur (celui là je l'ai pas eu)

Un troisième pour verrouiller l'accès au vba (pas eu non plus)

Merci pour vos conseils

Joël

Je ne pense pas que tu puisses réellement protéger ton document.

Un premier pour verrouiller l'accès aux feuilles et aux formules présentes dans les feuilles (je l'ai craqué en 1 mn via fichier zip)

Un second mon de passe pour verrouiller le classeur (celui là je l'ai pas eu)

Un troisième pour verrouiller l'accès au vba (pas eu non plus)

Le 1er n'a pas tenu une minute

Le 2ème j'ai pas essayé

le 3ème n'a pas tenu une minute

Ton travail sera en grande partie contenu dans ton code VBA, et cette partie n'est absolument pas protégée.

La meilleure façon pour toi de te protéger, c'est peut être de:

  • faire un code propre d'un côté
  • lorsqu'il est fini ruiner toutes les indentations et supprimer tous les commentaires. Un travail sans indentation ni commentaires est abominable à reprendre. Pas infaisable, mais bon.

Bonjour, tu est sur que tous les mots de passe sont crackables?

Mais que fait microsoft pour protéger ses clients?

Bien évidemment, si d'autres on une solution efficace je suis preneur

Bonjour,

Pour protéger tes procédures, tu peux utiliser l'outil mis à disposition par Sébastien. Très efficace !

https://forum.excel-pratique.com/cours-astuces/proteger-un-code-vba-grace-a-l-obfuscation-t69176.html

Cordialement,

Vbabeginner

Merci je vais tester

Mais à la question des mots de passe, est ce catégorique que l'on ne peut pas protéger son travail?

Bonjour,

A mon humble avis , je dirais oui ... Il y a des solutions un peu partout sur le net qui te proposent comment "sauter" les mots de passe Excel. Mais quelqu'un aura peut-être un "truc" infaillible... attendons de voir.

Cordialement,

Vbabeginner

Merci, j'ai lancé une demande similaire à l'assistance technique microsoft, après tout on paye une licence, curieux de connaitre leur position que je ferai suivre

Je viens de tester obfuscation, je ne trouve pas le procédé très efficace car si on connait VBA, un simple recherche remplacer remet le programme d'aplomb et lisible

1- le programme origiel

Sub exercice_boucles()

Const NB_CASES As Integer = 10 'Damier de 10x10 cellules

Dim lig As Integer, col As Integer ' => ajout de 2 variables

'Décalage (lignes) à partir de la première cellule = n° de ligne de la cellule active - 1

lig = ActiveCell.Row - 1

'Décalage (colonnes) à partir de la première cellule = n° de colonne de la cellule active - 1

col = ActiveCell.Column - 1

For l = 1 To NB_CASES 'N° ligne

For c = 1 To NB_CASES 'N° colonne

If (l + c) Mod 2 = 0 Then

'Cells(n° de ligne + décalage lignes, n° de colonne + décalage colonnes)...

Cells(l + lig, c + col).Interior.Color = RGB(200, 0, 0) 'Rouge

Else

Cells(l + lig, c + col).Interior.Color = RGB(0, 0, 0) 'Noir

End If

Next

Next

End Sub

2- après obfuscation

Sub hfe24f4ba40d57bd070a8fa837c503e9a()

Const e8249fbac6979ea3ebaf8cd8499ddb5ed As Integer = 10

Dim r583b6abaf6139cbd83855e21b41e8b11 As Integer, bd89e2ddb530bb8953b290ab0793aecb0 As Integer

r583b6abaf6139cbd83855e21b41e8b11 = ActiveCell.Row - 1

bd89e2ddb530bb8953b290ab0793aecb0 = ActiveCell.Column - 1

For g2db95e8e1a9267b7a1188556b2013b33 = 1 To e8249fbac6979ea3ebaf8cd8499ddb5ed

For t4a8a08f09d37b73795649038408b5f33 = 1 To e8249fbac6979ea3ebaf8cd8499ddb5ed

If (g2db95e8e1a9267b7a1188556b2013b33 + t4a8a08f09d37b73795649038408b5f33) Mod 2 = 0 Then

Cells(g2db95e8e1a9267b7a1188556b2013b33 + r583b6abaf6139cbd83855e21b41e8b11, t4a8a08f09d37b73795649038408b5f33 + bd89e2ddb530bb8953b290ab0793aecb0).Interior.Color = RGB(200, 0, 0)

Else

Cells(g2db95e8e1a9267b7a1188556b2013b33 + r583b6abaf6139cbd83855e21b41e8b11, t4a8a08f09d37b73795649038408b5f33 + bd89e2ddb530bb8953b290ab0793aecb0).Interior.Color = RGB(0, 0, 0)

End If

Next

Next

End Sub

3-Après 5 mn de rechercher remplacer

Sub macro()

Const M As Integer = 10

Dim K As Integer, L As Integer

K = ActiveCell.Row - 1

L = ActiveCell.Column - 1

For I = 1 To M

For J = 1 To M

If (I + J) Mod 2 = 0 Then

Cells(I + K, J + L).Interior.Color = RGB(200, 0, 0)

Else

Cells(I + K, J + L).Interior.Color = RGB(0, 0, 0)

End If

Next

Next

End Sub

Désolé je lis sans problème les codes

ça c'est sûr mais il y a deux points dont tu ne te rends pas compte:

  • là tu prends 20 lignes de code, imagine avec 500 lignes, 5 modules et 3 userforms. Bon courage pour savoir qui fait quoi au premier regard.
  • là tu devines le rôle de chaque variable, imagine que tes variables soient des tableaux, des collections, des objets, des couleurs. Tu imagines le boulot que c'est de tout remettre dans le bon ordre? Si tu sais pas qu'une variable sert de compteur, l'autre de condition, qui représente quoi?

Ici le but n'est pas d'empêcher la personne d'avoir ton code, mais de le rendre le plus difficile possible à déchiffrer. Et honnêtement, si elle arrive à déchiffrer ton code, c'est qu'elle sait le coder =) Le mec qui ne sait pas taper du VBA ne s'en sortira jamais.

d3d9x a écrit :

ça c'est sûr mais il y a deux points dont tu ne te rends pas compte:

  • là tu prends 20 lignes de code, imagine avec 500 lignes, 5 modules et 3 userforms. Bon courage pour savoir qui fait quoi au premier regard.
  • là tu devines le rôle de chaque variable, imagine que tes variables soient des tableaux, des collections, des objets, des couleurs. Tu imagines le boulot que c'est de tout remettre dans le bon ordre? Si tu sais pas qu'une variable sert de compteur, l'autre de condition, qui représente quoi?

Ici le but n'est pas d'empêcher la personne d'avoir ton code, mais de le rendre le plus difficile possible à déchiffrer. Et honnêtement, si elle arrive à déchiffrer ton code, c'est qu'elle sait le coder =) Le mec qui ne sait pas taper du VBA ne s'en sortira jamais.

J'ai parcouru plusieurs forum et bosser sur le sujet une partie d'hier, je ne prétends surtout pas avoir résolu le problème mais je vous soumets ce projet qui résiste à toutes les attaques que j'ai pu réaliser et qui marche normalement. Pour information, le simple fait de partager un fichier excel même version > 2013 et de l'ouvrir ensuite depuis un autre poste en téléchargeant via Excel fait disparaitre les mots de passe des feuilles et du classeur.

Alors n'hésitez à me faire part de vos remarques en MP ou en ligne

Ci joint fichier

Merci d'avance

joel

Fichier sans mot de passe en moins de 2 minutes.

Le mdp commence par 3842 d'ailleurs

Merci j'ai compris, de mon coté, j'ai aussi réussi à le casser en 2 minutes et le changer tout simplement. Rien ne resiste Il va falloir que je réfléchisse à une autre stratégie

bonsoir/bonjour a tous du forum

jhray38 si tu veux une protection efficace où relativement efficace en plus des acces admin, super admin par étages de protections

il faut coder tes lignes vba et garder un classeur pour la sauvegarde

par exemple

si tu as "private sub commandbutton1_click"

tu peux mettre "abcdefg hij klmmenioon1_kpckq"

un truc de ce genre ou chaque lettre ou groupe de mot soit identique pour tout le projet

Bonjour,

Pas encore ça

Private Sub Workbook_Open()

'Apparait Feuille 2 à Fin

ActiveWorkbook.Unprotect Password:="3842allezlom3842"

etc

eric

PS: ah, je n'avais pas vu la 2nde page de posts

Rechercher des sujets similaires à "fiabilite protection proteger efficacement travl"