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: