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, autrement dit, la solution est 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
   
   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 Excel

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).

Entrez ici votre code VBA :

Entrez ici la liste des variables, procédures et fonctions que vous souhaitez remplacer (entrez un nom par ligne, sans virgule ni caractères spéciaux) :