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

desactiver mot de passe vbaproject

23 réponses
Avatar
magic-dd
bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul =E0 pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.

10 réponses

1 2 3
Avatar
Gérald ROUSSEL
Bonsoir,

Sub Deproteger()
Worksheet.Unprotect(MotDePasse)
end sub

Et bien sur l'inverse pour la protéger :
Sub Deproteger()
Worksheet.Protect(.............)
End sub

mais dans le cas de la protection, il y a un très grand nombre d'arguments
possible (histoire de cocher ou non les cases qui vont bien... :
Worksheet.Protect(MotDePasse, ObjetsDessin, Contenu, Scénarios,
InterfaceUtilisateurUniquement, AutoriserCellulesMiseEnForme,
AutoriserColonnesMiseEnForme, AutoriserLignesMiseEnForme,
AutoriserInsertionColonnes, AutoriserInsertionLignes,
AutoriserInsertionLiensHypertexte, AutoriserSuppressionColonnes,
AutoriserSuppressionLignes, AutoriserTri, AutoriserFiltrage,
AutoriserUtilisationTableauxCroisésDynamiques)

Courage et persévérence...
Gérald ROUSSEL.


"magic-dd" a écrit dans le message de news:

bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul à pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.
Avatar
magic-dd
merci gerard

mais cela protege et deprotege la feuille de calcul et non pas l'acces
au VBA

c'est ce truc la que je souhaite

merci de ton aide quand meme

On 8 mai, 22:12, "Gérald ROUSSEL" wrote:
Bonsoir,

Sub Deproteger()
Worksheet.Unprotect(MotDePasse)
end sub

Et bien sur l'inverse pour la protéger :
Sub Deproteger()
Worksheet.Protect(.............)
End sub

mais dans le cas de la protection, il y a un très grand nombre d'argume nts
possible (histoire de cocher ou non les cases qui vont bien... :
Worksheet.Protect(MotDePasse, ObjetsDessin, Contenu, Scénarios,
InterfaceUtilisateurUniquement, AutoriserCellulesMiseEnForme,
AutoriserColonnesMiseEnForme, AutoriserLignesMiseEnForme,
AutoriserInsertionColonnes, AutoriserInsertionLignes,
AutoriserInsertionLiensHypertexte, AutoriserSuppressionColonnes,
AutoriserSuppressionLignes, AutoriserTri, AutoriserFiltrage,
AutoriserUtilisationTableauxCroisésDynamiques)

Courage et persévérence...
Gérald ROUSSEL.

"magic-dd" a écrit dans le message de news:

bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul à pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.


Avatar
MichDenis
Si tu travailles réseau, tu devrais expliquer davantage l'environnement dans lequel tu travailles
et le rôle de la macro que tu cherches car tu vas être confronter à diverses problématiques :

A ) le menu des barres d'outils est confiné dans un fichier ayant l'extension .xlb sur ton
ordinateur, tu peux faire une recherche via l'explorateur de Windows
*** les usagers sur les autres ordinateurs n'ont pas accès à ce fichier et par
conséquent aux mêmes barres d'outils personnalisés que toi.

B ) La problématique est le même pour le classeur Perso.xls qui sert ton poste de travail
les macros qu'il contient ne sont utiles qu''à ton poste ....

C ) Il y a la création d'une macro complémentaire (fichier xla) que tu peux distribuer
pour l'ensemble des usagers... mais est-ce nécessaire pour résoudre ton problème ?

D ) si c'est seulement pour ton poste, ce type de macro devrait faire
en supposant que tu utilises le même mot de passe pour toutes tes feuilles
( en passant, c'est une sécurité plus illusoire que réel, facile à passer outre )

DAns ton classeur Perso.xls

Sub Déprotéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.unprotect "MotDePasse"
Next
End sub

Sub protéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.protect "MotDePasse", true, true, true, true
Next
End sub

"magic-dd" a écrit dans le message de news:

bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul à pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.
Avatar
magic-dd
MichDenis

sur mon pc, j'ai tous mes classeurs excel (120 environ)

ceux ci ont leurs projet macro de proteger ce qui veux dire que si on
veut acceder au VBA, il faut ce mot de passe.

je suis le seul autorisé à modifier eventuelement des lignes de code
dans VBA

c'est pourquoi je recherche la methode pour desactiver ce mot de passe
à chaque ouverture de fichier sur et uniquement sur mon pc.

j'espere avoir été clair

merci

On 8 mai, 22:18, "MichDenis" wrote:
Si tu travailles réseau, tu devrais expliquer davantage l'environnement dans lequel tu travailles
et le rôle de la macro que tu cherches car tu vas être confronter à diverses problématiques :

A ) le menu des barres d'outils est confiné dans un fichier ayant l'ext ension .xlb sur ton
ordinateur, tu peux faire une recherche via l'explorateur de Windows
*** les usagers sur les autres ordinateurs n'ont pas accès à ce fichier et par
conséquent aux mêmes barres d'outils personnalisés que toi.

B ) La problématique est le même pour le classeur Perso.xls qui sert ton poste de travail
les macros qu'il contient ne sont utiles qu''à ton poste ....

C ) Il y a la création d'une macro complémentaire (fichier xla) que t u peux distribuer
pour l'ensemble des usagers... mais est-ce nécessaire pour réso udre ton problème ?

D ) si c'est seulement pour ton poste, ce type de macro devrait faire
en supposant que tu utilises le même mot de passe pour toutes tes feuilles
( en passant, c'est une sécurité plus illusoire que réel, fac ile à passer outre )

DAns ton classeur Perso.xls

Sub Déprotéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.unprotect "MotDePasse"
Next
End sub

Sub protéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.protect "MotDePasse", true, true, true, true
Next
End sub

"magic-dd" a écrit dans le message de news:

bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul à pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.


Avatar
cousinhub
Bonsoir, en mettant une condition du type si l'utilisateur se nomme
magic-dd, pas de protection....
If Environ("UserName") = "magic-dd" Then 'toutes les procédures de
déprotection'
dans le This Workbook_Open, peut-être?
Une piste?

MichDenis

sur mon pc, j'ai tous mes classeurs excel (120 environ)

ceux ci ont leurs projet macro de proteger ce qui veux dire que si on
veut acceder au VBA, il faut ce mot de passe.

je suis le seul autorisé à modifier eventuelement des lignes de code
dans VBA

c'est pourquoi je recherche la methode pour desactiver ce mot de passe
à chaque ouverture de fichier sur et uniquement sur mon pc.

j'espere avoir été clair

merci

On 8 mai, 22:18, "MichDenis" wrote:
Si tu travailles réseau, tu devrais expliquer davantage l'environnement dans lequel tu travailles
et le rôle de la macro que tu cherches car tu vas être confronter à diverses problématiques :

A ) le menu des barres d'outils est confiné dans un fichier ayant l'extension .xlb sur ton
ordinateur, tu peux faire une recherche via l'explorateur de Windows
*** les usagers sur les autres ordinateurs n'ont pas accès à ce fichier et par
conséquent aux mêmes barres d'outils personnalisés que toi.

B ) La problématique est le même pour le classeur Perso.xls qui sert ton poste de travail
les macros qu'il contient ne sont utiles qu''à ton poste ....

C ) Il y a la création d'une macro complémentaire (fichier xla) que tu peux distribuer
pour l'ensemble des usagers... mais est-ce nécessaire pour résoudre ton problème ?

D ) si c'est seulement pour ton poste, ce type de macro devrait faire
en supposant que tu utilises le même mot de passe pour toutes tes feuilles
( en passant, c'est une sécurité plus illusoire que réel, facile à passer outre )

DAns ton classeur Perso.xls

Sub Déprotéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.unprotect "MotDePasse"
Next
End sub

Sub protéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.protect "MotDePasse", true, true, true, true
Next
End sub

"magic-dd" a écrit dans le message de news:

bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul à pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.






Avatar
MichDenis
2 Méthodes :

A )
Dans un module standard, tu copies ce qui suit :
Et tu exécutes la macro "Test" en MODIFIANT
l'adresse et le nom du classeur à ouvrir ... à la ligne
suivante, tu dois aussi modifier le mot de passe "denis"
pour le tien.

La macro test S'EXÉCUTE à partir de L'INTERFACE
de la feuille de calcul et NON à partir de la fenêtre VBA.

Ce type de truc à déjà été soumis ici par Laurent Longre

Tu dois ajouter au classeur à partir de la fenêtre VBA, sous
le menu outils / références, la référence suivante :

"Microsoft for visual basic for applications extensibility 5.3"

Une section de la procédure Test ajoute un module ....
cela n'est pas nécessaire c'est seulement un test pour prouver
comme quoi le fichier VBA fut ouvert !


Dans le HAUT du module, tu copies ces API
'-------------------------------------
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function GetForegroundWindow Lib "User32" () As Long
Private Declare Function SetForegroundWindow Lib "User32" _
(ByVal hWnd As Long) As Long
'----------------------------------------
Function Déprotège(Classeur As String, MdP As String) As Boolean

Dim XLhWnd As Long, VBEhWnd As Long, CurhWnd As Long
Dim Wbk As Workbook

On Error Resume Next
Set Wbk = Workbooks(Dir$(Classeur))
On Error GoTo Fin
If Not Wbk Is Nothing Then
If Wbk.FullName <> Classeur Then Exit Function
If Not Wbk.Saved Then Wbk.Save
Else: Application.ScreenUpdating = False
End If

CurhWnd = GetForegroundWindow
XLhWnd = FindWindowA(vbNullString, Application.Caption)

With Application.VBE
VBEhWnd = FindWindowA(vbNullString, .MainWindow.Caption)
If CurhWnd = XLhWnd Then SetForegroundWindow VBEhWnd
.CommandBars.FindControl(ID:%57).Execute
' NE PAS EFFACER, même si le classeur est déjà ouvert !!!!!!
Workbooks.Open Classeur
If ActiveWorkbook.VBProject.Protection = vbext_pp_locked Then
SendKeys "~" & MdP & "~", True
.ActiveCodePane.Window.Close
End If
End With

SetForegroundWindow CurhWnd
Déprotège = True
Exit Function

Fin:
End Function

'--------------------------------------------
Sub Test()

Const Classeur = "C:classeur3.xls"
If Not Déprotège(Classeur, "denis") Then
MsgBox "Erreur"
Else
MsgBox "Projet VBA déprotégé."
'stop
With Workbooks(Dir$(Classeur))
.VBProject.VBComponents.Add vbext_ct_StdModule
.Close True
End With
Workbooks.Open Classeur
MsgBox "Projet reprotégé, ajout d'un module standard."
End If

End Sub
'-----------------------------------------------------



B ) De Bill Manville, 29-Jan-2000
Plus simple car elle n'a pas besoin des API de windows mais
requiert toujours la référence :

"Microsoft for visual basic for applications extensibility 5.3"

'need reference To VBA Extensibility
'need To make sure that the target project Is the active project

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("ABook.xls"), "password"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application. ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%TE", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~"
Application.VBE. CommandBars(1).FindControl(Id:%78, recursive:=True).Execute
WB.Save
End Sub
Avatar
magic-dd
ca serait l'ideal

mais comment ?
On 8 mai, 22:42, cousinhub wrote:
Bonsoir, en mettant une condition du type si l'utilisateur se nomme
magic-dd, pas de protection....
If Environ("UserName") = "magic-dd" Then 'toutes les procédures de
déprotection'
dans le This Workbook_Open, peut-être?
Une piste?


MichDenis

sur mon pc, j'ai tous mes classeurs excel (120 environ)

ceux ci ont leurs projet macro de proteger ce qui veux dire que si on
veut acceder au VBA, il faut ce mot de passe.

je suis le seul autorisé à modifier eventuelement des lignes de code
dans VBA

c'est pourquoi je recherche la methode pour desactiver ce mot de passe
à chaque ouverture de fichier sur et uniquement sur mon pc.

j'espere avoir été clair

merci

On 8 mai, 22:18, "MichDenis" wrote:
Si tu travailles réseau, tu devrais expliquer davantage l'environnem ent dans lequel tu travailles
et le rôle de la macro que tu cherches car tu vas être confronter à diverses problématiques :

A ) le menu des barres d'outils est confiné dans un fichier ayant l' extension .xlb sur ton
ordinateur, tu peux faire une recherche via l'explorateur de Wind ows
*** les usagers sur les autres ordinateurs n'ont pas accès à ce fichier et par
conséquent aux mêmes barres d'outils personnalisés q ue toi.

B ) La problématique est le même pour le classeur Perso.xls qui se rt ton poste de travail
les macros qu'il contient ne sont utiles qu''à ton poste ....

C ) Il y a la création d'une macro complémentaire (fichier xla) qu e tu peux distribuer
pour l'ensemble des usagers... mais est-ce nécessaire pour r ésoudre ton problème ?

D ) si c'est seulement pour ton poste, ce type de macro devrait faire
en supposant que tu utilises le même mot de passe pour toutes tes feuilles
( en passant, c'est une sécurité plus illusoire que réel, facile à passer outre )

DAns ton classeur Perso.xls

Sub Déprotéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.unprotect "MotDePasse"
Next
End sub

Sub protéger()
dim sh as worksheet
For each sh in ActiveWorkbook.Worksheets
sh.protect "MotDePasse", true, true, true, true
Next
End sub

"magic-dd" a écrit dans le message de news:

bonjour

par un bouton dans ma barre d'otils, je souhaiterais y affecter une
macro pour desactiver le mot de passe de mes feuilles excel pour
lequel je suis le seul à pouvoir modifier les lignes de code

le probleme est que le mot de passe etant long, cela est penible de le
retaper a chaque fois que jo'uvre une feuille.

merci de votre aide.






Avatar
magic-dd
merci michel
j'essayerai demain

si ca mamrche merci
et si ca marche pas merci kan meme

à bientot

On 8 mai, 22:50, "MichDenis" wrote:
2 Méthodes :

A )
Dans un module standard, tu copies ce qui suit :
Et tu exécutes la macro "Test" en MODIFIANT
l'adresse et le nom du classeur à ouvrir ... à la ligne
suivante, tu dois aussi modifier le mot de passe "denis"
pour le tien.

La macro test S'EXÉCUTE à partir de L'INTERFACE
de la feuille de calcul et NON à partir de la fenêtre VBA.

Ce type de truc à déjà été soumis ici par Laurent Longre

Tu dois ajouter au classeur à partir de la fenêtre VBA, sous
le menu outils / références, la référence suivante :

"Microsoft for visual basic for applications extensibility 5.3"

Une section de la procédure Test ajoute un module ....
cela n'est pas nécessaire c'est seulement un test pour prouver
comme quoi le fichier VBA fut ouvert !

Dans le HAUT du module, tu copies ces API
'-------------------------------------
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function GetForegroundWindow Lib "User32" () As Long
Private Declare Function SetForegroundWindow Lib "User32" _
(ByVal hWnd As Long) As Long
'----------------------------------------
Function Déprotège(Classeur As String, MdP As String) As Boolean

Dim XLhWnd As Long, VBEhWnd As Long, CurhWnd As Long
Dim Wbk As Workbook

On Error Resume Next
Set Wbk = Workbooks(Dir$(Classeur))
On Error GoTo Fin
If Not Wbk Is Nothing Then
If Wbk.FullName <> Classeur Then Exit Function
If Not Wbk.Saved Then Wbk.Save
Else: Application.ScreenUpdating = False
End If

CurhWnd = GetForegroundWindow
XLhWnd = FindWindowA(vbNullString, Application.Caption)

With Application.VBE
VBEhWnd = FindWindowA(vbNullString, .MainWindow.Caption)
If CurhWnd = XLhWnd Then SetForegroundWindow VBEhWnd
.CommandBars.FindControl(ID:%57).Execute
' NE PAS EFFACER, même si le classeur est déjà ouvert !!!!!!
Workbooks.Open Classeur
If ActiveWorkbook.VBProject.Protection = vbext_pp_locked Then
SendKeys "~" & MdP & "~", True
.ActiveCodePane.Window.Close
End If
End With

SetForegroundWindow CurhWnd
Déprotège = True
Exit Function

Fin:
End Function

'--------------------------------------------
Sub Test()

Const Classeur = "C:classeur3.xls"
If Not Déprotège(Classeur, "denis") Then
MsgBox "Erreur"
Else
MsgBox "Projet VBA déprotégé."
'stop
With Workbooks(Dir$(Classeur))
.VBProject.VBComponents.Add vbext_ct_StdModule
.Close True
End With
Workbooks.Open Classeur
MsgBox "Projet reprotégé, ajout d'un module standard."
End If

End Sub
'-----------------------------------------------------

B ) De Bill Manville, 29-Jan-2000
Plus simple car elle n'a pas besoin des API de windows mais
requiert toujours la référence :

"Microsoft for visual basic for applications extensibility 5.3"

'need reference To VBA Extensibility
'need To make sure that the target project Is the active project

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
UnprotectVBProject Workbooks("ABook.xls"), "password"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
'
Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

If VBP.Protection <> vbext_pp_locked Then Exit Sub

Application. ScreenUpdating = False

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True

If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%TE", True
End If

' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ProtectVBProject(WB As Workbook, ByVal Password As String)

Dim VBP As VBProject, oWin As VBIDE.Window
Dim wbActive As Workbook
Dim i As Integer

Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook

' Close any code windows To ensure we hit the right project
For Each oWin In VBP.VBE.Windows
If InStr(oWin.Caption, "(") > 0 Then oWin.Close
Next oWin

WB.Activate
' now use lovely SendKeys To unprotect
Application.OnKey "%{F11}"
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~"
Application.VBE. CommandBars(1).FindControl(Id:%78, recursive:= True).Execute
WB.Save
End Sub


Avatar
tissot.emmanuel
Bonsoir,

Les codes que tu nous fournis sont très intéressants et non moins complexes.
J'ai donc essayé d'en faire une petite synthèse susceptible de répondre au
problème initialement soulevé par Magic DD.

Citation:
sur mon pc, j'ai tous mes classeurs excel (120 environ)
ceux ci ont leurs projet macro de proteger ce qui veux dire que si on
veut acceder au VBA, il faut ce mot de passe.
je suis le seul autorisé à modifier eventuelement des lignes de code
dans VBA
c'est pourquoi je recherche la methode pour desactiver ce mot de passe
à chaque ouverture de fichier sur et uniquement sur mon pc.
Fin de citation.

Voici ce que j'ai testé avec succès sur ma configuration (WinXP SP2 + XL
2003):

Dans le classeur Perso.xls
Ouvrir VBE>Outils>References
Cocher Microsoft Visual Basic for Applications Extensibility 5.3

Puis insérer un module de classe (garder le nom Classe1 par défaut) et y
copier le code suivant:

Public WithEvents ThisApplication As Application

Private Sub ThisApplication_WorkbookOpen(ByVal Wb As Workbook)
If Wb.VBProject.Protection = vbext_pp_locked Then
Application.VBE.CommandBars.FindControl(, 2578).Execute
SendKeys "shazam" 'Le mdp de tous tes classeurs
SendKeys "{ENTER}"
SendKeys "{ESC}" 'Quitte la fenetre propriete du projet
End If
End Sub

Dans le module ThisWorkbook de Perso.xls copier le code suivant:

Dim xlApp As Classe1

Private Sub Workbook_Open()
Set xlApp = New Classe1
Set xlApp.ThisApplication = Application
End Sub

Enregistrer le tout, fermer Excel, ouvrir Excel. Ouvrir un classeur
quelconque, normalement le projet VBA est dévérouillé sans qu'on ait rien eu
à faire si tant est bien sur que le mot de passe soit correct, dans le cas
contraire la boite de dialogue demandant le mot de passe s'affiche.

Cordialement,

Manu/
Avatar
MichDenis
Une façon intéressante de traiter la problématique...
C'est Magic ...;-)

"tissot.emmanuel" a écrit dans le message de news:

Bonsoir,

Les codes que tu nous fournis sont très intéressants et non moins complexes.
J'ai donc essayé d'en faire une petite synthèse susceptible de répondre au
problème initialement soulevé par Magic DD.

Citation:
sur mon pc, j'ai tous mes classeurs excel (120 environ)
ceux ci ont leurs projet macro de proteger ce qui veux dire que si on
veut acceder au VBA, il faut ce mot de passe.
je suis le seul autorisé à modifier eventuelement des lignes de code
dans VBA
c'est pourquoi je recherche la methode pour desactiver ce mot de passe
à chaque ouverture de fichier sur et uniquement sur mon pc.
Fin de citation.

Voici ce que j'ai testé avec succès sur ma configuration (WinXP SP2 + XL
2003):

Dans le classeur Perso.xls
Ouvrir VBE>Outils>References
Cocher Microsoft Visual Basic for Applications Extensibility 5.3

Puis insérer un module de classe (garder le nom Classe1 par défaut) et y
copier le code suivant:

Public WithEvents ThisApplication As Application

Private Sub ThisApplication_WorkbookOpen(ByVal Wb As Workbook)
If Wb.VBProject.Protection = vbext_pp_locked Then
Application.VBE.CommandBars.FindControl(, 2578).Execute
SendKeys "shazam" 'Le mdp de tous tes classeurs
SendKeys "{ENTER}"
SendKeys "{ESC}" 'Quitte la fenetre propriete du projet
End If
End Sub

Dans le module ThisWorkbook de Perso.xls copier le code suivant:

Dim xlApp As Classe1

Private Sub Workbook_Open()
Set xlApp = New Classe1
Set xlApp.ThisApplication = Application
End Sub

Enregistrer le tout, fermer Excel, ouvrir Excel. Ouvrir un classeur
quelconque, normalement le projet VBA est dévérouillé sans qu'on ait rien eu
à faire si tant est bien sur que le mot de passe soit correct, dans le cas
contraire la boite de dialogue demandant le mot de passe s'affiche.

Cordialement,

Manu/
1 2 3