Public Sub DuplicateUserForms(ByVal VBProj As VBIDE.VBProject)
Dim OldComp As VBIDE.VBComponent, NewComp As VBIDE.VBComponent
Dim Prop As VBIDE.Property, OldCtrl As MSForms.Control, NewCtrl As MSForms.Control
For Each OldComp In VBProj.VBComponents
If OldComp.Type = VBIDE.vbext_ComponentType.vbext_ct_MSForm Then
With Excel.Application.Workbooks.Add
Set NewComp = .VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_MSForm)
With NewComp
'Copie des propriétés du UserForm
On Error Resume Next
For Each Prop In OldComp.Properties
.Properties(Prop.Name).Value = Prop.Value
Next Prop
On Error GoTo 0
'Ajout des contrôles
For Each OldCtrl In OldComp.Designer.Controls
Set NewCtrl = .Designer.Controls.Add("Forms." & VBA.Information.TypeName(OldCtrl) & ".1")
'Parcourir les propriétés du contrôle : j'y arrive pô
On Error Resume Next
With NewCtrl
End With
On Error GoTo 0
Next OldCtrl
End With
End With
End If
Next OldComp
End Sub