'### Constantes à adapter ###
Const MOT_PASSE As String = "zaza"
Const MODULE_EXPORT As String = "Module2"
'############################
Sub TransfertModule(NomModule As String, NomClasseur As String)
Dim LignesCode As String
Dim Wbk As Workbook
With thisworkbook.VBProject.VBComponents(NomModule).CodeModule
LignesCode = .Lines(1, .CountOfLines)
End With
LignesCode = Replace(LignesCode, "Option Explicit", "")
With Workbooks(NomClasseur).VBProject
.VBComponents.Add(1).Name = NomModule
.VBComponents(NomModule).CodeModule.AddFromString LignesCode
End With
End Sub
Private Sub VBEUnprotect(ByVal WB As Workbook, ByVal MotPasse As String)
On Error GoTo Erreur
If WB.VBProject.Protection = 0 Then Exit Sub
Set Application.VBE.ActiveVBProject = WB.VBProject
SendKeys "{ENTER}" & MotPasse & "{ENTER}{ESC}", True
Erreur:
End Sub
Sub ExporterModule()
Dim i&
Dim Nom$
If Application.Workbooks.Count <> 2 Then
MsgBox "Les classeurs ouverts doivent être au nombre de 2 pour que l'import-export du module puisse s'effectuer."
Exit Sub
End If
For i& = 1 To 2
If Workbooks(i&).Name <> thisworkbook.Name Then _
Nom$ = Workbooks(i&).Name
Next i&
Application.VBE.MainWindow.Visible = True
Call VBEUnprotect(thisworkbook, MOT_PASSE)
Call TransfertModule(MODULE_EXPORT, Nom$)
Application.VBE.MainWindow.Visible = False
End Sub