Protection du code VBA (Excel)
Pour protéger un code VBA, vous pouvez ajouter un mot de passe depuis l'éditeur pour empêcher l'accès au code VBA. Malheureusement cette protection est limitée et peut être contournée par un utilisateur averti.
Une solution efficace pour protéger un code VBA est l'obfuscation (qui permet de rendre votre code VBA "illisible" tout en restant fonctionnel).
Ce procédé consiste à supprimer les lignes vides et commentaires et à remplacer les noms des variables, des procédures et des fonctions par des noms aléatoires pour rendre le code VBA de votre classeur Excel incompréhensible.
Voici un exemple de code rendu illisible par obfuscation :
AVANT OBFUSCATION
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
Debug.Print lig & " / " & col 'Debug
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
APRES 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
Obfusquer un code VBA
Pour obfusquer facilement un code VBA, vous pouvez utiliser cet outil gratuit (important : n'oubliez pas de conserver une copie du code ou du fichier d'origine).