Bonjour,
C'est mon premier post sur ce genre de forum, excuser moi si je n'écris pas les bonnes infos.
Mon problème, je n'arrive pas à ajouter un module dans un classeur Excel 2010 dont le VBproject est protéger par un mot de passe que j'ai mis. Je tiens a garder la protection par mot de passe pour éviter la modification du code par de tierce personnes
Je vous post le code que j'ai actuellement. J'arrive a déverrouiller le classeur mais je ne parviens pas a y insérer le module.
Les références "Microsoft Visual Basic for Applications Extensibility 5.3" et Microsoft Scripting Runtime" sont bien active.
Merci pour votre aide
C'est mon premier post sur ce genre de forum, excuser moi si je n'écris pas les bonnes infos.
Mon problème, je n'arrive pas à ajouter un module dans un classeur Excel 2010 dont le VBproject est protéger par un mot de passe que j'ai mis. Je tiens a garder la protection par mot de passe pour éviter la modification du code par de tierce personnes
Je vous post le code que j'ai actuellement. J'arrive a déverrouiller le classeur mais je ne parviens pas a y insérer le module.
Les références "Microsoft Visual Basic for Applications Extensibility 5.3" et Microsoft Scripting Runtime" sont bien active.
Merci pour votre aide
Code:
Sub TestUnprotect()
UnprotectVBProject Workbooks("Base de données V0-2.xlsm"), "motpass"
Workbooks("Base de données V0-2.xlsm").Activate
ReplaceVBAModule
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 & "~~" & "{ESC}"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
Application.Wait (Now + TimeValue("0:00:02"))
End Sub
Sub ReplaceVBAModule()
Const ModulePath As String = "K:\Projet VM\Bêta\dernière version\essai mise à jour\MAJ.bas"
Const ModuleName As String = "MAJ"
Const PathToFiles As String = "K:\Projet VM\Bêta\dernière version\essai mise à jour"
Dim lngFileCounter As Long, wbTarget As Workbook
'Search for files that we want to replace code module in
With Application.FileSearch
.NewSearch
.FileType = msoFileTypeExcelWorkbooks
.LookIn = PathToFiles
.Execute
For lngFileCounter = 1 To .FoundFiles.Count
Set wbTarget = Workbooks.Open(.FoundFiles(lngFileCounter))
'First we need to remove the existing module
wbTarget.VBProject.VBComponents.Remove wbTarget.VBProject.VBComponents(ModuleName)
'Now we can import the new module, save the workbook and close.
wbTarget.VBProject.VBComponents.Import ModulePath
wbTarget.Close savechanges:=True
Next lngFileCounter
End With
End Sub
Dernière modification par un modérateur: