J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O03YWWz8HHA.4712@TK2MSFTNGP04.phx.gbl...
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O03YWWz8HHA.4712@TK2MSFTNGP04.phx.gbl...
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O03YWWz8HHA.4712@TK2MSFTNGP04.phx.gbl...
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O03YWWz8HHA.4712@TK2MSFTNGP04.phx.gbl...
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Désolé, je n'ai pas ouvert ton fichier. Personnellement
je n'offre pas un service de "déboguage".
La proposition faite à ta demande initiale à savoir
comment "déprotéger le code d'un classeur et supprimer
toutes les procédures du fichier est complète et opérationnelle.
L'adaptation de cette procédure à ta réalité,
c'est ton boulot et non le mien.
| le débogueur m'annonce "indice en dehors de la plage " Erreur 9
*** Cette erreur survient lorsque l'objet identifié n'existe pas
ou mal orthographié....
2 exemples :
A )
Si dans une procédure, tu as cette ligne de code et que tu n'as aucune
feuille ayant un onglet au nom de "Feuil4" dans ton classeur,
cela provoquera une "Erreur 9"
Set sh = Worksheets("Feuil4")
B )
Même principe dans le cas d'un classeur
Set Wk = Workbooks("Classeur3.xls")
Suggestion :
Dans ta procédure, tu aurais tout avantage à utiliser une variable pour
contenir le nom de ton fichier
Dim MonFichier As String
MonFichier = "Old " & annee & " " & base & ".xls"
Set Wk = Workbooks(MonFichier)
Si tu répètes à divers endroit le nom du fichier, le risque d'erreur
est de beaucoup réduit et tu te facilites la tâche lors du déboguage
car tu auras à vérifier qu'à un seul endroit le nom de ton fichier est
exact.
"François" a écrit dans le message de news:
uq9QcQ$
Bonsoir Michdenis (ou plutôt Bonjour !)
J'ai mis le code dans mon fichier, et la macro bogue sur l'instruction :
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
dans la partie :
Dim Wk As Workbook 'open VBA project
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
UnprotectVBProject Wk, "bosquet"
Détruire_Le_Code Wk ' delete all the code
le débogueur m'annonce "indice en dehors de la plage " Erreur 9
et pourtant le fichier Old 2008 Mission Leave Plans (32) a bien été créé
...
Pour plus de facilité, je joins le fichier en Cjoint :
http://cjoint.com/?jkxS474V0g
mot de passe du fichier : rouen
mot de passe du VBA : bosquet
Merci beaucoup pour ton aide
François
"MichDenis" a écrit dans le message de news:J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Désolé, je n'ai pas ouvert ton fichier. Personnellement
je n'offre pas un service de "déboguage".
La proposition faite à ta demande initiale à savoir
comment "déprotéger le code d'un classeur et supprimer
toutes les procédures du fichier est complète et opérationnelle.
L'adaptation de cette procédure à ta réalité,
c'est ton boulot et non le mien.
| le débogueur m'annonce "indice en dehors de la plage " Erreur 9
*** Cette erreur survient lorsque l'objet identifié n'existe pas
ou mal orthographié....
2 exemples :
A )
Si dans une procédure, tu as cette ligne de code et que tu n'as aucune
feuille ayant un onglet au nom de "Feuil4" dans ton classeur,
cela provoquera une "Erreur 9"
Set sh = Worksheets("Feuil4")
B )
Même principe dans le cas d'un classeur
Set Wk = Workbooks("Classeur3.xls")
Suggestion :
Dans ta procédure, tu aurais tout avantage à utiliser une variable pour
contenir le nom de ton fichier
Dim MonFichier As String
MonFichier = "Old " & annee & " " & base & ".xls"
Set Wk = Workbooks(MonFichier)
Si tu répètes à divers endroit le nom du fichier, le risque d'erreur
est de beaucoup réduit et tu te facilites la tâche lors du déboguage
car tu auras à vérifier qu'à un seul endroit le nom de ton fichier est
exact.
"François" <nospam@nospam.fr> a écrit dans le message de news:
uq9QcQ$8HHA.4752@TK2MSFTNGP04.phx.gbl...
Bonsoir Michdenis (ou plutôt Bonjour !)
J'ai mis le code dans mon fichier, et la macro bogue sur l'instruction :
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
dans la partie :
Dim Wk As Workbook 'open VBA project
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
UnprotectVBProject Wk, "bosquet"
Détruire_Le_Code Wk ' delete all the code
le débogueur m'annonce "indice en dehors de la plage " Erreur 9
et pourtant le fichier Old 2008 Mission Leave Plans (32) a bien été créé
...
Pour plus de facilité, je joins le fichier en Cjoint :
http://cjoint.com/?jkxS474V0g
mot de passe du fichier : rouen
mot de passe du VBA : bosquet
Merci beaucoup pour ton aide
François
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
eJnpHhz8HHA.1900@TK2MSFTNGP02.phx.gbl...
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O03YWWz8HHA.4712@TK2MSFTNGP04.phx.gbl...
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Désolé, je n'ai pas ouvert ton fichier. Personnellement
je n'offre pas un service de "déboguage".
La proposition faite à ta demande initiale à savoir
comment "déprotéger le code d'un classeur et supprimer
toutes les procédures du fichier est complète et opérationnelle.
L'adaptation de cette procédure à ta réalité,
c'est ton boulot et non le mien.
| le débogueur m'annonce "indice en dehors de la plage " Erreur 9
*** Cette erreur survient lorsque l'objet identifié n'existe pas
ou mal orthographié....
2 exemples :
A )
Si dans une procédure, tu as cette ligne de code et que tu n'as aucune
feuille ayant un onglet au nom de "Feuil4" dans ton classeur,
cela provoquera une "Erreur 9"
Set sh = Worksheets("Feuil4")
B )
Même principe dans le cas d'un classeur
Set Wk = Workbooks("Classeur3.xls")
Suggestion :
Dans ta procédure, tu aurais tout avantage à utiliser une variable pour
contenir le nom de ton fichier
Dim MonFichier As String
MonFichier = "Old " & annee & " " & base & ".xls"
Set Wk = Workbooks(MonFichier)
Si tu répètes à divers endroit le nom du fichier, le risque d'erreur
est de beaucoup réduit et tu te facilites la tâche lors du déboguage
car tu auras à vérifier qu'à un seul endroit le nom de ton fichier est
exact.
"François" a écrit dans le message de news:
uq9QcQ$
Bonsoir Michdenis (ou plutôt Bonjour !)
J'ai mis le code dans mon fichier, et la macro bogue sur l'instruction :
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
dans la partie :
Dim Wk As Workbook 'open VBA project
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
UnprotectVBProject Wk, "bosquet"
Détruire_Le_Code Wk ' delete all the code
le débogueur m'annonce "indice en dehors de la plage " Erreur 9
et pourtant le fichier Old 2008 Mission Leave Plans (32) a bien été créé
...
Pour plus de facilité, je joins le fichier en Cjoint :
http://cjoint.com/?jkxS474V0g
mot de passe du fichier : rouen
mot de passe du VBA : bosquet
Merci beaucoup pour ton aide
François
"MichDenis" a écrit dans le message de news:J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Désolé, je n'ai pas ouvert ton fichier. Personnellement
je n'offre pas un service de "déboguage".
La proposition faite à ta demande initiale à savoir
comment "déprotéger le code d'un classeur et supprimer
toutes les procédures du fichier est complète et opérationnelle.
L'adaptation de cette procédure à ta réalité,
c'est ton boulot et non le mien.
| le débogueur m'annonce "indice en dehors de la plage " Erreur 9
*** Cette erreur survient lorsque l'objet identifié n'existe pas
ou mal orthographié....
2 exemples :
A )
Si dans une procédure, tu as cette ligne de code et que tu n'as aucune
feuille ayant un onglet au nom de "Feuil4" dans ton classeur,
cela provoquera une "Erreur 9"
Set sh = Worksheets("Feuil4")
B )
Même principe dans le cas d'un classeur
Set Wk = Workbooks("Classeur3.xls")
Suggestion :
Dans ta procédure, tu aurais tout avantage à utiliser une variable pour
contenir le nom de ton fichier
Dim MonFichier As String
MonFichier = "Old " & annee & " " & base & ".xls"
Set Wk = Workbooks(MonFichier)
Si tu répètes à divers endroit le nom du fichier, le risque d'erreur
est de beaucoup réduit et tu te facilites la tâche lors du déboguage
car tu auras à vérifier qu'à un seul endroit le nom de ton fichier est
exact.
"François" a écrit dans le message de news:
uq9QcQ$
Bonsoir Michdenis (ou plutôt Bonjour !)
J'ai mis le code dans mon fichier, et la macro bogue sur l'instruction :
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
dans la partie :
Dim Wk As Workbook 'open VBA project
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
UnprotectVBProject Wk, "bosquet"
Détruire_Le_Code Wk ' delete all the code
le débogueur m'annonce "indice en dehors de la plage " Erreur 9
et pourtant le fichier Old 2008 Mission Leave Plans (32) a bien été créé
...
Pour plus de facilité, je joins le fichier en Cjoint :
http://cjoint.com/?jkxS474V0g
mot de passe du fichier : rouen
mot de passe du VBA : bosquet
Merci beaucoup pour ton aide
François
"MichDenis" a écrit dans le message de news:J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Désolé, je n'ai pas ouvert ton fichier. Personnellement
je n'offre pas un service de "déboguage".
La proposition faite à ta demande initiale à savoir
comment "déprotéger le code d'un classeur et supprimer
toutes les procédures du fichier est complète et opérationnelle.
L'adaptation de cette procédure à ta réalité,
c'est ton boulot et non le mien.
| le débogueur m'annonce "indice en dehors de la plage " Erreur 9
*** Cette erreur survient lorsque l'objet identifié n'existe pas
ou mal orthographié....
2 exemples :
A )
Si dans une procédure, tu as cette ligne de code et que tu n'as aucune
feuille ayant un onglet au nom de "Feuil4" dans ton classeur,
cela provoquera une "Erreur 9"
Set sh = Worksheets("Feuil4")
B )
Même principe dans le cas d'un classeur
Set Wk = Workbooks("Classeur3.xls")
Suggestion :
Dans ta procédure, tu aurais tout avantage à utiliser une variable pour
contenir le nom de ton fichier
Dim MonFichier As String
MonFichier = "Old " & annee & " " & base & ".xls"
Set Wk = Workbooks(MonFichier)
Si tu répètes à divers endroit le nom du fichier, le risque d'erreur
est de beaucoup réduit et tu te facilites la tâche lors du déboguage
car tu auras à vérifier qu'à un seul endroit le nom de ton fichier est
exact.
"François" <nospam@nospam.fr> a écrit dans le message de news:
uq9QcQ$8HHA.4752@TK2MSFTNGP04.phx.gbl...
Bonsoir Michdenis (ou plutôt Bonjour !)
J'ai mis le code dans mon fichier, et la macro bogue sur l'instruction :
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
dans la partie :
Dim Wk As Workbook 'open VBA project
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
UnprotectVBProject Wk, "bosquet"
Détruire_Le_Code Wk ' delete all the code
le débogueur m'annonce "indice en dehors de la plage " Erreur 9
et pourtant le fichier Old 2008 Mission Leave Plans (32) a bien été créé
...
Pour plus de facilité, je joins le fichier en Cjoint :
http://cjoint.com/?jkxS474V0g
mot de passe du fichier : rouen
mot de passe du VBA : bosquet
Merci beaucoup pour ton aide
François
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
eJnpHhz8HHA.1900@TK2MSFTNGP02.phx.gbl...
J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
O03YWWz8HHA.4712@TK2MSFTNGP04.phx.gbl...
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Désolé, je n'ai pas ouvert ton fichier. Personnellement
je n'offre pas un service de "déboguage".
La proposition faite à ta demande initiale à savoir
comment "déprotéger le code d'un classeur et supprimer
toutes les procédures du fichier est complète et opérationnelle.
L'adaptation de cette procédure à ta réalité,
c'est ton boulot et non le mien.
| le débogueur m'annonce "indice en dehors de la plage " Erreur 9
*** Cette erreur survient lorsque l'objet identifié n'existe pas
ou mal orthographié....
2 exemples :
A )
Si dans une procédure, tu as cette ligne de code et que tu n'as aucune
feuille ayant un onglet au nom de "Feuil4" dans ton classeur,
cela provoquera une "Erreur 9"
Set sh = Worksheets("Feuil4")
B )
Même principe dans le cas d'un classeur
Set Wk = Workbooks("Classeur3.xls")
Suggestion :
Dans ta procédure, tu aurais tout avantage à utiliser une variable pour
contenir le nom de ton fichier
Dim MonFichier As String
MonFichier = "Old " & annee & " " & base & ".xls"
Set Wk = Workbooks(MonFichier)
Si tu répètes à divers endroit le nom du fichier, le risque d'erreur
est de beaucoup réduit et tu te facilites la tâche lors du déboguage
car tu auras à vérifier qu'à un seul endroit le nom de ton fichier est
exact.
"François" a écrit dans le message de news:
uq9QcQ$
Bonsoir Michdenis (ou plutôt Bonjour !)
J'ai mis le code dans mon fichier, et la macro bogue sur l'instruction :
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
dans la partie :
Dim Wk As Workbook 'open VBA project
Set Wk = Workbooks("Old " & annee & " " & base & ".xls")
UnprotectVBProject Wk, "bosquet"
Détruire_Le_Code Wk ' delete all the code
le débogueur m'annonce "indice en dehors de la plage " Erreur 9
et pourtant le fichier Old 2008 Mission Leave Plans (32) a bien été créé
...
Pour plus de facilité, je joins le fichier en Cjoint :
http://cjoint.com/?jkxS474V0g
mot de passe du fichier : rouen
mot de passe du VBA : bosquet
Merci beaucoup pour ton aide
François
"MichDenis" a écrit dans le message de news:J'ai omis de modifier cette ligne de code dans la
procédure de Bill Manville :
| If VBP.Protection = vbext_pp_locked Then
Tu la remplaces par ceci :
If VBP.Protection = 1 Then
"MichDenis" a écrit dans le message de news:
Dans la procédure originale de Bill Manville, il utilise ceci :
SendKeys "%{F11}%TE" & Password & "~~%{F11}", True
Mais comme Bill travaille sur une version anglaise, il faut traduire
les lettre TE pour Oe et la ligne de commande devient celle-ci :
SendKeys "%{F11}%Oe" & Password & "~~%{F11}", True
IMPORTANT : N'oublie pas de saisir le nom du fichier dont tu
veux déprotéger ton fichier dans la procédure "Test"
La procédure test doit être lancé à partir de l'interface de la
feuille de calcul et non à partir de la fenêtre de l'éditeur de code.
Cela devrait fonctionner pour les versions Excel 97 à Excel 2003.
Aucune idée pour la version 2007.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
Dim Wk As Workbook
'Ouvre le projet VBA
Set Wk = Workbooks("à détruire1.xls")
'Supprime toutes les procédures
UnprotectVBProject Wk, "denismichon"
Détruire_Le_Code Wk
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
'
' Bill Manville, 29-Jan-2000
' Que j'ai légèrement adapté en outre pour
' la version française d'excel et aussi pour
' se passer de la référence suivante :
' " Microsoft Visual Basic for Applications Extensibility 5.3"
Dim VBP As Object, oWin As Object
Dim wbActive As Workbook
Dim i As Integer
Set VBP = WB.VBProject
Set wbActive = ActiveWorkbook
If VBP.Protection <> 1 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}%Oe" & Password & "~~%{F11}", True
If VBP.Protection = vbext_pp_locked Then
' failed - maybe wrong password
SendKeys "%{F11}%Oe", True
End If
' leave no evidence of the password
Password = ""
' go back To the previously active workbook
wbActive.Activate
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''