Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Protéger un code VBA

19 réponses
Avatar
pb
Bonjour,
Existe t'il un moyen de protection de code VBA autre que propriètè du
Projet puis vérouiller pour l'affichage.
(Genre un truc qui détruirait le code en cas de violation)
Merci
Pascal

10 réponses

1 2
Avatar
Philippe.R
Bonsoir,
Regarde du côté de chez Frédéric, tu y trouveras de quoi t'inspirer
http://frederic.sigonneau.free.fr/VBE.htm
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"pb" a écrit dans le message de
news:
Bonjour,
Existe t'il un moyen de protection de code VBA autre que propriètè du
Projet puis vérouiller pour l'affichage.
(Genre un truc qui détruirait le code en cas de violation)
Merci
Pascal





Avatar
MichDenis
Bonjour,

Tu cherches quelque chose qui est selon moi impossible à empêcher !
Sur le marché, il existe des logiciels spécialisés qui passent au travers
de n'importe quel mot de passe le temps de le dire. (celui qui protège
le code)

Peu importe la macro que tu places à l'intérieur, l'usager peut ouvrir le
fichier en désactivant les macros et comme le code n'est plus déprotégé, il y
aura accès.

De fait, le mot de passe est là pour empêcher les curieux de s'y aventurer,
mais il ne résiste pas longtemps à celui qui veut vraiment craquer le code.

Voici une macro qui efface tout le code d'un classeur lors qu'elle est lancée.


Ci-dessous une sub de Chip Pearson qui le fait (attention
elle marche vraiment !) il ne te reste plus qu'à la lancer
le jour désiré ...ou en utilisant un événement !

'----------------------------------------------------------------------------
Sub Suicide()
Dim FName As String
Dim Ndx As Integer
With ThisWorkbook
.Save
For Ndx = 1 To Application.RecentFiles.Count
If Application.RecentFiles(Ndx).Path = .FullName Then
Application.RecentFiles(Ndx).Delete
Exit For
End If
Next Ndx
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close SaveChanges:úlse
End With
End Sub
'----------------------------------------------------------------------------
Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
Chip Pearson




"pb" a écrit dans le message de groupe de discussion :

Bonjour,
Existe t'il un moyen de protection de code VBA autre que propriètè du
Projet puis vérouiller pour l'affichage.
(Genre un truc qui détruirait le code en cas de violation)
Merci
Pascal
Avatar
pb
Avant que je ne fasse une bêtise, crois-tu qu'il soit possible de la lancer
si quelque tente de rentrer sur VBA.
Un truc dans le genre si ALT F11 ou si outils macro Visual Basic Editor ou
si macro désactivées à l'ouverture alors la macro se lance

Pascal






"MichDenis" a écrit dans le message de news:

Bonjour,

Tu cherches quelque chose qui est selon moi impossible à empêcher !
Sur le marché, il existe des logiciels spécialisés qui passent au travers
de n'importe quel mot de passe le temps de le dire. (celui qui protège
le code)

Peu importe la macro que tu places à l'intérieur, l'usager peut ouvrir le
fichier en désactivant les macros et comme le code n'est plus déprotégé,
il y
aura accès.

De fait, le mot de passe est là pour empêcher les curieux de s'y
aventurer,
mais il ne résiste pas longtemps à celui qui veut vraiment craquer le
code.

Voici une macro qui efface tout le code d'un classeur lors qu'elle est
lancée.


Ci-dessous une sub de Chip Pearson qui le fait (attention
elle marche vraiment !) il ne te reste plus qu'à la lancer
le jour désiré ...ou en utilisant un événement !

'----------------------------------------------------------------------------
Sub Suicide()
Dim FName As String
Dim Ndx As Integer
With ThisWorkbook
.Save
For Ndx = 1 To Application.RecentFiles.Count
If Application.RecentFiles(Ndx).Path = .FullName Then
Application.RecentFiles(Ndx).Delete
Exit For
End If
Next Ndx
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close SaveChanges:úlse
End With
End Sub
'----------------------------------------------------------------------------
Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
Chip Pearson




"pb" a écrit dans le message de groupe de discussion :

Bonjour,
Existe t'il un moyen de protection de code VBA autre que propriètè du
Projet puis vérouiller pour l'affichage.
(Genre un truc qui détruirait le code en cas de violation)
Merci
Pascal





Avatar
gmlsteph
Bonjour,

des fois je me dis que certains doivent avoir des codes tellement
puissants et élaborés que tous les blindages
du monde ne suffiraient pas à protèger de tels trésors secrets,
d'ailleurs on se demande comment ils n'ont pas élaboré eux-même la
stratégie pour les protèger avant d'avoir pondu la 1ère ligne puisque
personne même en cherchant sur internet ne pourrait lui même concevoir
un truc pareil.

;-)

--
lSteph


On 7 avr, 07:36, "pb" wrote:
Avant que je ne fasse une bêtise, crois-tu qu'il soit possible de la la ncer
si quelque tente de rentrer sur VBA.
Un truc dans le genre si ALT F11 ou si outils macro Visual Basic Editor o u
si macro désactivées à l'ouverture alors la macro se lance

Pascal

"MichDenis" a écrit dans le message de news:




> Bonjour,

> Tu cherches quelque chose qui est selon moi impossible à empêcher !
> Sur le marché, il existe des logiciels spécialisés qui passent au travers
> de n'importe quel mot de passe le temps de le dire. (celui qui protèg e
> le code)

> Peu importe la macro que tu places à l'intérieur, l'usager peut ouv rir le
> fichier en désactivant les macros et comme le code n'est plus dépro tégé,
> il y
> aura accès.

> De fait, le mot de passe est là pour empêcher les curieux de s'y
> aventurer,
> mais il ne résiste pas longtemps à celui qui veut vraiment craquer le
> code.

> Voici une macro qui efface tout le code d'un classeur lors qu'elle est
> lancée.

> Ci-dessous une sub de Chip Pearson qui le fait (attention
> elle marche vraiment !) il ne te reste plus qu'à la lancer
> le jour désiré ...ou en utilisant un événement !

> '---------------------------------------------------------------------- ----­--
> Sub Suicide()
> Dim FName As String
> Dim Ndx As Integer
> With ThisWorkbook
>    .Save
>    For Ndx = 1 To Application.RecentFiles.Count
>        If Application.RecentFiles(Ndx).Path = .FullName Then
>            Application.RecentFiles(Ndx).Delete
>            Exit For
>        End If
>    Next Ndx
>    .ChangeFileAccess Mode:=xlReadOnly
>    Kill .FullName
>    .Close SaveChanges:úlse
> End With
> End Sub
> '---------------------------------------------------------------------- ----­--
> Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
> Chip Pearson

> "pb" a écrit dans le message de groupe de discussion :
>
> Bonjour,
> Existe t'il un moyen de protection  de code VBA autre que proprièt è du
> Projet puis vérouiller pour l'affichage.
> (Genre un truc qui détruirait le code en cas de violation)
> Merci
> Pascal- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
pb
Merci
Très aimable

a écrit dans le message de news:

Bonjour,

des fois je me dis que certains doivent avoir des codes tellement
puissants et élaborés que tous les blindages
du monde ne suffiraient pas à protèger de tels trésors secrets,
d'ailleurs on se demande comment ils n'ont pas élaboré eux-même la
stratégie pour les protèger avant d'avoir pondu la 1ère ligne puisque
personne même en cherchant sur internet ne pourrait lui même concevoir
un truc pareil.

;-)

--
lSteph


On 7 avr, 07:36, "pb" wrote:
Avant que je ne fasse une bêtise, crois-tu qu'il soit possible de la
lancer
si quelque tente de rentrer sur VBA.
Un truc dans le genre si ALT F11 ou si outils macro Visual Basic Editor ou
si macro désactivées à l'ouverture alors la macro se lance

Pascal

"MichDenis" a écrit dans le message de news:




> Bonjour,

> Tu cherches quelque chose qui est selon moi impossible à empêcher !
> Sur le marché, il existe des logiciels spécialisés qui passent au
> travers
> de n'importe quel mot de passe le temps de le dire. (celui qui protège
> le code)

> Peu importe la macro que tu places à l'intérieur, l'usager peut ouvrir
> le
> fichier en désactivant les macros et comme le code n'est plus déprotégé,
> il y
> aura accès.

> De fait, le mot de passe est là pour empêcher les curieux de s'y
> aventurer,
> mais il ne résiste pas longtemps à celui qui veut vraiment craquer le
> code.

> Voici une macro qui efface tout le code d'un classeur lors qu'elle est
> lancée.

> Ci-dessous une sub de Chip Pearson qui le fait (attention
> elle marche vraiment !) il ne te reste plus qu'à la lancer
> le jour désiré ...ou en utilisant un événement !

> '--------------------------------------------------------------------------­--
> Sub Suicide()
> Dim FName As String
> Dim Ndx As Integer
> With ThisWorkbook
> .Save
> For Ndx = 1 To Application.RecentFiles.Count
> If Application.RecentFiles(Ndx).Path = .FullName Then
> Application.RecentFiles(Ndx).Delete
> Exit For
> End If
> Next Ndx
> .ChangeFileAccess Mode:=xlReadOnly
> Kill .FullName
> .Close SaveChanges:úlse
> End With
> End Sub
> '--------------------------------------------------------------------------­--
> Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
> Chip Pearson

> "pb" a écrit dans le message de groupe de discussion :
>
> Bonjour,
> Existe t'il un moyen de protection de code VBA autre que propriètè du
> Projet puis vérouiller pour l'affichage.
> (Genre un truc qui détruirait le code en cas de violation)
> Merci
> Pascal- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
MichDenis
Voici un petit exemple qui reste à tester :

Dans le ThisWorkbook du classeur, tu inscris ceci :

'------------------------------
Private Sub Workbook_Activate()

'Si le fichier est déprotégé -> suicide , le fichier disparait totalement
If ThisWorkbook.VBProject.Protection = False Then
Call Module1.Suicide
'Si la date de péremption est dépassé représenté ici par
' DateSerial(2009, 4, 8) -> déprotection du fichier + suicide
ElseIf Date > DateSerial(2009, 4, 8) Then
call Module1.TestUnprotect
End If
End Sub
'------------------------------

Place ce qui suit dans un module standard,
si le nom est autre que module1, il faudra que
tu modifies les références dans les procédures suivantes.
'------------------------------------------------
Sub TestUnprotect()
'"a" représente le mot de passe
UnprotectVBProject ThisWorkbook, "a"
Call Module1.Suicide
End Sub

'------------------------------------------------
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78, _
recursive:=True).Execute
End Sub
'------------------------------------------------
Sub Suicide()
Dim FName As String
Dim Ndx As Integer
With ThisWorkbook
.Save
For Ndx = 1 To Application.RecentFiles.Count
If Application.RecentFiles(Ndx).Path = .FullName Then
Application.RecentFiles(Ndx).Delete
Exit For
End If
Next Ndx
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close SaveChanges:úlse
End With
End Sub
'------------------------------------------------

Si la disparition totale du fichier est trop draconienne, tu peux te contenter
de faire disparaitre tout le code et userform.

à mettre dans le même module standard ...
Pour appeler cette procédure : tu écris call Le_Code ThisWorkbook
'--------------------------------------------
Sub Détruire_Le_Code(Wk As Workbook)
Set VBComps = Wk.VBProject.VBComponents
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next
End Sub
'--------------------------------------------




"pb" a écrit dans le message de groupe de discussion :

Merci
Très aimable

a écrit dans le message de news:

Bonjour,

des fois je me dis que certains doivent avoir des codes tellement
puissants et élaborés que tous les blindages
du monde ne suffiraient pas à protèger de tels trésors secrets,
d'ailleurs on se demande comment ils n'ont pas élaboré eux-même la
stratégie pour les protèger avant d'avoir pondu la 1ère ligne puisque
personne même en cherchant sur internet ne pourrait lui même concevoir
un truc pareil.

;-)

--
lSteph


On 7 avr, 07:36, "pb" wrote:
Avant que je ne fasse une bêtise, crois-tu qu'il soit possible de la
lancer
si quelque tente de rentrer sur VBA.
Un truc dans le genre si ALT F11 ou si outils macro Visual Basic Editor ou
si macro désactivées à l'ouverture alors la macro se lance

Pascal

"MichDenis" a écrit dans le message de news:




> Bonjour,

> Tu cherches quelque chose qui est selon moi impossible à empêcher !
> Sur le marché, il existe des logiciels spécialisés qui passent au
> travers
> de n'importe quel mot de passe le temps de le dire. (celui qui protège
> le code)

> Peu importe la macro que tu places à l'intérieur, l'usager peut ouvrir
> le
> fichier en désactivant les macros et comme le code n'est plus déprotégé,
> il y
> aura accès.

> De fait, le mot de passe est là pour empêcher les curieux de s'y
> aventurer,
> mais il ne résiste pas longtemps à celui qui veut vraiment craquer le
> code.

> Voici une macro qui efface tout le code d'un classeur lors qu'elle est
> lancée.

> Ci-dessous une sub de Chip Pearson qui le fait (attention
> elle marche vraiment !) il ne te reste plus qu'à la lancer
> le jour désiré ...ou en utilisant un événement !

> '--------------------------------------------------------------------------­--
> Sub Suicide()
> Dim FName As String
> Dim Ndx As Integer
> With ThisWorkbook
> .Save
> For Ndx = 1 To Application.RecentFiles.Count
> If Application.RecentFiles(Ndx).Path = .FullName Then
> Application.RecentFiles(Ndx).Delete
> Exit For
> End If
> Next Ndx
> .ChangeFileAccess Mode:=xlReadOnly
> Kill .FullName
> .Close SaveChanges:úlse
> End With
> End Sub
> '--------------------------------------------------------------------------­--
> Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
> Chip Pearson

> "pb" a écrit dans le message de groupe de discussion :
>
> Bonjour,
> Existe t'il un moyen de protection de code VBA autre que propriètè du
> Projet puis vérouiller pour l'affichage.
> (Genre un truc qui détruirait le code en cas de violation)
> Merci
> Pascal- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
MichDenis
OUPS,

cette ligne de code dans la procédure ACTIVATE
ElseIf Date > DateSerial(2009, 4, 8) Then
call Module1.TestUnprotect

Doit plutôt se lire comme suit :

ElseIf Date > DateSerial(2009, 4, 8) Then
Call UnprotectVBProject(ThisWorkbook, "a")
"a" étant le mot de passe.

Si tu le désires, tu retrouveras sur le site de Misange (excelabo)
une procédure qui force l'usager à activer les macros pour pouvoir
avoir accès au contenu du classeur. Un peu de recherche, ce sera
ta participation ...;-)

Cela fait seulement compliquer la tâche de ceux qui sont "vraiment" trop curieux !
;-))
Avatar
LSteph
Non, juste pour susciter réflexion!
...enfin il me semble.

pb a écrit :
Merci
Très aimable

a écrit dans le message de news:

Bonjour,

des fois je me dis que certains doivent avoir des codes tellement
puissants et élaborés que tous les blindages
du monde ne suffiraient pas à protèger de tels trésors secrets,
d'ailleurs on se demande comment ils n'ont pas élaboré eux-même la
stratégie pour les protèger avant d'avoir pondu la 1ère ligne puisque
personne même en cherchant sur internet ne pourrait lui même concevoir
un truc pareil.

;-)

--
lSteph


On 7 avr, 07:36, "pb" wrote:
Avant que je ne fasse une bêtise, crois-tu qu'il soit possible de la
lancer
si quelque tente de rentrer sur VBA.
Un truc dans le genre si ALT F11 ou si outils macro Visual Basic Editor ou
si macro désactivées à l'ouverture alors la macro se lance

Pascal

"MichDenis" a écrit dans le message de news:




Bonjour,
Tu cherches quelque chose qui est selon moi impossible à empêcher !
Sur le marché, il existe des logiciels spécialisés qui passent au
travers
de n'importe quel mot de passe le temps de le dire. (celui qui protège
le code)
Peu importe la macro que tu places à l'intérieur, l'usager peut ouvrir
le
fichier en désactivant les macros et comme le code n'est plus déprotégé,
il y
aura accès.
De fait, le mot de passe est là pour empêcher les curieux de s'y
aventurer,
mais il ne résiste pas longtemps à celui qui veut vraiment craquer le
code.
Voici une macro qui efface tout le code d'un classeur lors qu'elle est
lancée.
Ci-dessous une sub de Chip Pearson qui le fait (attention
elle marche vraiment !) il ne te reste plus qu'à la lancer
le jour désiré ...ou en utilisant un événement !
'--------------------------------------------------------------------------­--
Sub Suicide()
Dim FName As String
Dim Ndx As Integer
With ThisWorkbook
.Save
For Ndx = 1 To Application.RecentFiles.Count
If Application.RecentFiles(Ndx).Path = .FullName Then
Application.RecentFiles(Ndx).Delete
Exit For
End If
Next Ndx
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close SaveChanges:úlse
End With
End Sub
'--------------------------------------------------------------------------­--
Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
Chip Pearson
"pb" a écrit dans le message de groupe de discussion :

Bonjour,
Existe t'il un moyen de protection de code VBA autre que propriètè du
Projet puis vérouiller pour l'affichage.
(Genre un truc qui détruirait le code en cas de violation)
Merci
Pascal- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -







Avatar
pb
Merci MichDenis,
Je bosse là dessus et te tiens au courant de mes "découvertes" de débutant
voulant protéger son code et ne comprenant pas trop le sens de la
contribution de Lsteph.
Mais Bon...



"MichDenis" a écrit dans le message de news:

OUPS,

cette ligne de code dans la procédure ACTIVATE
ElseIf Date > DateSerial(2009, 4, 8) Then
call Module1.TestUnprotect

Doit plutôt se lire comme suit :

ElseIf Date > DateSerial(2009, 4, 8) Then
Call UnprotectVBProject(ThisWorkbook, "a")
"a" étant le mot de passe.

Si tu le désires, tu retrouveras sur le site de Misange (excelabo)
une procédure qui force l'usager à activer les macros pour pouvoir
avoir accès au contenu du classeur. Un peu de recherche, ce sera
ta participation ...;-)

Cela fait seulement compliquer la tâche de ceux qui sont "vraiment" trop
curieux !
;-))






Avatar
Philippe.R
Bonsoir,
Juste pour préciser que macros désactivées, il me semble hautement peu
probable qu'un code inséré dans le classeur puisse s'exécuter...
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"pb" a écrit dans le message de
news:%
Avant que je ne fasse une bêtise, crois-tu qu'il soit possible de la
lancer si quelque tente de rentrer sur VBA.
Un truc dans le genre si ALT F11 ou si outils macro Visual Basic Editor ou
si macro désactivées à l'ouverture alors la macro se lance

Pascal






"MichDenis" a écrit dans le message de news:

Bonjour,

Tu cherches quelque chose qui est selon moi impossible à empêcher !
Sur le marché, il existe des logiciels spécialisés qui passent au travers
de n'importe quel mot de passe le temps de le dire. (celui qui protège
le code)

Peu importe la macro que tu places à l'intérieur, l'usager peut ouvrir le
fichier en désactivant les macros et comme le code n'est plus déprotégé,
il y
aura accès.

De fait, le mot de passe est là pour empêcher les curieux de s'y
aventurer,
mais il ne résiste pas longtemps à celui qui veut vraiment craquer le
code.

Voici une macro qui efface tout le code d'un classeur lors qu'elle est
lancée.


Ci-dessous une sub de Chip Pearson qui le fait (attention
elle marche vraiment !) il ne te reste plus qu'à la lancer
le jour désiré ...ou en utilisant un événement !

'----------------------------------------------------------------------------
Sub Suicide()
Dim FName As String
Dim Ndx As Integer
With ThisWorkbook
.Save
For Ndx = 1 To Application.RecentFiles.Count
If Application.RecentFiles(Ndx).Path = .FullName Then
Application.RecentFiles(Ndx).Delete
Exit For
End If
Next Ndx
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close SaveChanges:úlse
End With
End Sub
'----------------------------------------------------------------------------
Bob Umlas a conçu la propriété ChangeFileAccess. Le reste du code est de
Chip Pearson




"pb" a écrit dans le message de groupe de discussion :

Bonjour,
Existe t'il un moyen de protection de code VBA autre que propriètè du
Projet puis vérouiller pour l'affichage.
(Genre un truc qui détruirait le code en cas de violation)
Merci
Pascal









1 2