Obfusquer un code VBA

Bonjour,

Je suis allé consulter et essayé la page pour obfusquer un code VBA. C'est vraiment extra merci. Mais il doit me manquer un petit bout. Car je souhaite surtout rendre secret des mots de passe.

Donc par exemple j'ai le code ...

Dim WkPwd as string

Dim WsPwd as tring

WkPwd = "AlloWk"

WsPwd = "AlloWs"

Alors oui par exemple la ligne ThisWorkbook.Unprotect WkPwd devient Thisworkbook.Unprotect ... avec le code obfusqué et cela et parfait.

Mais j'ai eu à écrire le code WkPwd = "AlloWk". Alors quelqu'un peut trouver cette ligne de code et donc savoir le mot de passe du classeur.

Quelle serait alors la bonne technique ou tactique afin que le mot de passe ne soit pas détectable?

Merci à l'avance.

Bonjour,

Je dirai que la "vraie" solution c'est de ne pas tenir de données trop sensibles dans un classeur Excel, ou du moins dans le classeur de la personne qui n'est pas destinée à s'en servir.

Après, il existe quand meme une option pour bloquer l'accès au code VBA via mot de passe :

Dans le VBE > Explorateurs de projets > clic droit sur le projet > VBA propriétés > Protection > bloquer la visualisation.

image image

Merci. Oui le projet est déjà protégé. Mais il est facile de pouvoir cracker ce mot de passe.

Je souhaiterais être en mesure de faire en sorte de faire différemment que ces 2 lignes.

WkPwd = "AlloWk"

WsPwd = "AlloWs"

Re,

Vous pouvez implémenter une fonction de cryptographie dans votre code si vous voulez, mais c'est juste déplacer le problème selon moi. Comme je vous l'indiquais la meilleure solution c'est d'éviter le partage de ces données si vous ne souhaitez pas qu'elles soient lues. C'est souvent possible. Par définition, votre classeur VBA contient le MDP, surtout si il est enregistré en xlsm, ce sera possible de bidouiller pour retrouver ou faire sauter un MDP.

Pour info Microsoft Office password protection - Wikipedia

Essayez de préciser ce que vous voulez faire globalement, l'objectif final. Il existe peut etre une autre méthode que celle que vous voulez mettre en place.

EDIT : il existe sur le site un Obfusquer un code VBA. Qui remplace vos variables par des noms incompréhensibles. Le code reste fonctionnel.

Par contre il y aura toujours écrit [variable incompréhensible].Unprotect [autre variable]

Donc bon encore une fois un utilisateur averti s'y retrouvera sans grandes difficultés avec un CTRL+F.

Oui merci. J'ai déjà vu cela. Et j'ai l'intention de l'implémenter. Mais ... je comprends que l'obfusquation est pour les variables.

Mais lorsque j'établie les variables ... par exemple pour le mot de passe des feuilles j'utilise WsPwd = "AlloWs". Alors la variable WsPwd sera obfusquée. Ce qui est parfait. Mais à quelque part de dois inscrire WsPwd = "AlloWs" pour établir la variable.

Donc comment obfusquer ce code? Ou que cette ligne ne puisse être reconnue?

Super safe.

Function MotDePasseCacheQuiTue() As String
  Dim varxyz As String
  Dim i As Long, j As Long, c As Long
  For i = 1 To 248899 Mod 35556 - 1
    For j = 65 To 111
      Select Case i
      Case 1
        If j = 65 Then
          varxyz = varxyz & Chr(j)
          c = j
          Exit For
        End If
      Case 2
        If j - c = 43 Then
          varxyz = varxyz & Chr(j)
          c = j - 1 + WorksheetFunction.Power(4, 0)
          Exit For
        End If
      Case 3
        If j = c Then
          varxyz = varxyz & Chr(c)
          Exit For
        End If
      Case 4
        varxyz = varxyz & Chr(1 * 10 + 1 * 100 + 1)
        Exit For
      Case 5
        varxyz = varxyz & Chr(WorksheetFunction.Power(4, 4) / 2 - 101 + 60)
        Exit For
      Case Else
        varxyz = varxyz & "k"
        Exit For
      End Select
    Next j
  Next i
  MotDePasseCacheQuiTue = varxyz
End Function
Rechercher des sujets similaires à "obfusquer code vba"