Aller au contenu

Comment Sécuriser et Monétiser un Fichier Excel avec un Système de Licence

La vente d’applications ou d’outils automatisés basés sur Microsoft Excel est un excellent moyen de valoriser et de monétiser une expertise technique (comme des systèmes complexes de gestion de la paie, des modules d’analyse financière ou des outils de suivi de performance). Cependant, une problématique récurrente se pose dès la première vente : comment empêcher un client de dupliquer et de partager librement votre fichier à des tiers sans votre accord ?

Cet article détaille les réalités techniques de la protection sous Excel, propose une solution pratique et gratuite par code VBA basée sur l’identifiant matériel de l’ordinateur, et présente les solutions professionnelles de compilation.

1. La vérité technique sur la sécurité native d’Excel

Avant d’implémenter la moindre ligne de code, il est indispensable de poser un constat clair : Excel n’a jamais été conçu pour être un environnement d’exécution de logiciels sécurisés. Les protections natives proposées par Microsoft (mot de passe sur le classeur, protection de la structure ou verrouillage des feuilles) possèdent des failles majeures :

  • Les mots de passe des feuilles de calcul peuvent être supprimés en quelques secondes via des scripts de contournement ou en modifiant l’architecture XML du fichier après l’avoir renommé en .zip.
  • Les projets VBA, bien que verrouillés par un mot de passe, restent vulnérables face à des logiciels de récupération de mot de passe (cracking) ou face à des développeurs expérimentés.

Néanmoins, l’objectif d’une protection commerciale n’est pas nécessairement d’atteindre un niveau de sécurité militaire, mais d’opposer des barrières techniques suffisamment dissuasives pour bloquer 95 % des utilisateurs ordinaires et rentabiliser votre travail.

2. La Solution Gratuite : Le système de licence par « Machine ID » (VBA)

Pour lier l’utilisation de votre fichier à un poste de travail unique (une licence par PC), la méthode la plus efficace consiste à exploiter une caractéristique matérielle immuable de la machine de votre client, comme le numéro de série de son disque dur principal (HDD/SSD Serial).

Le mécanisme d’activation en 4 étapes :

  1. Première ouverture : Le client lance le fichier. Un script VBA s’exécute automatiquement, détecte que le classeur n’a jamais été activé sur ce poste, et extrait le numéro de série du disque dur de l’utilisateur (ex: 184729471).
  2. Demande de clé : Une boîte de dialogue s’affiche, présentant ce « Code Machine » unique et bloquant l’accès au reste du classeur. Le client vous transmet ce code.
  3. Génération de la licence : De votre côté, vous appliquez un algorithme mathématique secret sur ce numéro. Par exemple, une formule simple : $\text{Clé} = (\text{Serial} \times 3) + 999$. Vous renvoyez le résultat (la clé d’activation) au client.
  4. Validation définitive : Le client saisit la clé. Le code VBA vérifie la correspondance. Si la clé est valide, elle est stockée de manière invisible dans le fichier, et l’application s’ouvre normalement lors des utilisations futures.

Code Source VBA à implémenter

Ce code est à insérer directement dans le module ThisWorkbook de votre projet Excel (format .xlsm) :

VBA

Private Sub Workbook_Open()
    Dim FSO As Object
    Dim DriveLetter As String
    Dim SerialNumber As Long
    Dim KeySaisie As String
    Dim KeyAttendue As String
    Dim WS_Config As Worksheet
    
    On Error Resume Next
    Set WS_Config = ThisWorkbook.Sheets("Configuration")
    On Error GoTo 0
    
    ' 1. Extraction du numéro de série du disque système (C:)
    DriveLetter = "C"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    SerialNumber = FSO.GetDrive(DriveLetter).SerialNumber
    
    ' 2. Algorithme secret de génération de clé
    ' Modifiez cette formule mathématique pour personnaliser votre propre clé
    KeyAttendue = CStr((SerialNumber * 2) + 777)
    
    ' 3. Vérification du statut d'activation
    If WS_Config Is Nothing Or WS_Config.Range("A1").Value <> KeyAttendue Then
        
        ' Demande d'activation si la clé stockée ne correspond pas au PC actuel
        KeySaisie = InputBox("Votre code machine unique est : " & SerialNumber & vbCrLf & _
                             "Veuillez transmettre ce code à votre vendeur pour obtenir votre clé d'activation.", _
                             "Activation de votre Licence Poste")
        
        ' 4. Sanction de la conformité
        If KeySaisie = KeyAttendue Then
            MsgBox "Félicitations, votre licence a été activée avec succès !", vbInformation, "Succès"
            
            If Not WS_Config Is Nothing Then
                WS_Config.Range("A1").Value = KeyAttendue
                ThisWorkbook.Save
            End If
        Else
            MsgBox "Clé d'activation invalide ou absente. L'application va se fermer.", vbCritical, "Erreur d'activation"
            ThisWorkbook.Close SaveChanges:=False
        End If
    End If
End Sub

⚠️ Les 3 étapes obligatoires pour verrouiller ce système

Le code ci-dessus est inutile si l’utilisateur peut simplement l’effacer. Vous devez impérativement :

  • Protéger le projet VBA : Dans l’éditeur VBA (Alt + F11), allez dans Outils > Propriétés de VBAProject > Onglet Protection. Cochez « Verrouiller le projet pour l’affichage » et définissez un mot de passe robuste.
  • Masquer la feuille de stockage : Créez une feuille nommée « Configuration ». Dans l’éditeur VBA, changez sa propriété Visible en 2 - xlSheetVeryHidden. Elle devient totalement invisible et impossible à réafficher depuis l’interface standard d’Excel (le clic droit « Afficher » est grisé).
  • Forcer l’activation des macros : Masquez toutes vos feuilles de travail utiles par défaut à la fermeture du fichier, sauf une page d’accueil indiquant « Veuillez activer les macros ». Utilisez le code VBA pour afficher vos vraies feuilles de données uniquement après la validation réussie de la licence.

3. La Solution Professionnelle : Les compilateurs tiers en fichiers « .EXE »

Si la méthode VBA affiche ses limites face à un public d’utilisateurs avancés, la solution industrielle consiste à encapsuler le fichier Excel dans une application Windows native (un exécutable indépendant portant l’extension .exe).

Des outils reconnus du marché comme XLSPadlock ou DoneEx Excel Compiler effectuent cette transformation sans altérer vos formules et macros initiales. Ils apportent des fonctionnalités de sécurité impossibles à reproduire manuellement :

  • Chiffrement binaire : Les formules de calcul et le code VBA sont entièrement compilés en code machine. Ils deviennent invisibles, indétectables et impossibles à extraire, même avec des outils de décompilation.
  • Gestion automatisée des licences : Intégration native de modules d’activation en ligne, clés d’activation matérielles verrouillées sur le processeur/carte mère, ou gestion de clés USB physiques d’activation (dongles).
  • Gestion du modèle économique : Possibilité d’gérer une date d’expiration stricte au fichier (idéal pour commercialiser des formules d’abonnement mensuel ou annuel) ou un compteur d’utilisations (versions d’évaluation limitées à 30 lancements).

4. Synthèse comparative des solutions

Critères d’analyseMéthode 1 : Script VBA (Machine ID)Méthode 2 : Compilateur (.EXE)
Niveau de sécuritéModéré. Élimine l’utilisation frauduleuse standard, mais vulnérable aux experts VBA.Très élevé. Protection de niveau logiciel commercial, incraquable par les méthodes classiques.
Coût d’implémentationTotalement gratuit. Uniquement basé sur du code intégré.Payant. Nécessite l’achat d’une licence logicielle tierce.
Expérience clientOuverture classique sous Excel après une seule saisie manuelle de clé.Lancement d’un fichier .exe standard sous Windows (environnement Excel encapsulé).
Modèles de vente permisAchat définitif lié à un ou plusieurs postes de travail identifiés.Achat définitif, versions de démonstration limitées dans le temps, ou abonnements récurrents.

Conclusion et recommandation stratégique

Pour lancer un nouveau produit sur le marché ou valider l’intérêt commercial de votre outil Excel auprès de vos premiers clients, la Méthode 1 par script VBA basé sur le numéro de série est idéale. Gratuite et rapide à mettre en place, elle assurera le respect global de vos ventes.

Dès lors que votre volume de vente augmente ou que la valeur de votre fichier justifie un investissement de protection, migrer vers un compilateur en fichier .exe sera l’étape naturelle pour transformer votre simple classeur Excel en un logiciel propriétaire autonome.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *