XL 2016 Exporter un module lors de la copie d'un fichier

JPrev

XLDnaute Junior
Bonjour,

Pour les besoins d'un de mes fichiers, j'utilise une copie simple d'un onglet vers un nouveau classeur.

Or, j'aimerais que cette copie soit copiée avec un module particulier (appelé Module 6).

Est-ce que cette manipulation est possible? Si oui, avez-vous une portion de code qui traite ça?

En vous remerciant d'avance pour votre retour, si vous avez besoin de plus d'infos sur ma demande, n'hésitez pas!

JPrev
 

Dudu2

XLDnaute Barbatruc
Bonjour,

J'ai ça dans mes cartons.
VB:
'----------------------------------------
'Copie un module d'un classeur à un autre
'Nécessite d'activer la référence "Microsoft Visual Basic for Applications Extensibility 5.3"
'----------------------------------------
Sub CopyModuleToWorkbook(WBSource As Workbook, WBDestination As Workbook, ModuleName As String)
    Dim S As String
    Dim ApplicationScreenUpdatingAtCallTime As Boolean
    Dim ActiveSheetAtCallTime As Worksheet
    
    'Valeurs initiales
    ApplicationScreenUpdatingAtCallTime = Application.ScreenUpdating
    Set ActiveSheetAtCallTime = ActiveSheet
    
    
    With WBSource.VBProject.VBComponents(ModuleName).CodeModule
        S = .Lines(1, .CountOfLines)
    End With

    With WBDestination.VBProject
        On Error Resume Next
        .VBComponents.Remove .VBComponents.Item(ModuleName)
        On Error GoTo 0
        
        .VBComponents.Add(1).Name = ModuleName
        .VBComponents(ModuleName).CodeModule.AddFromString S
        .VBE.ActiveWindow.Close
        
        'Pour sortir du contexte Projet VBA et revenir sur la feuille active
        Application.ScreenUpdating = False
        WBSource.Activate
        ActiveSheetAtCallTime.Activate
        Application.ScreenUpdating = ApplicationScreenUpdatingAtCallTime
    End With
End Sub


'-----------------------------
'Supprime module d'un classeur
'Nécessite d'activer la référence "Microsoft Visual Basic for Applications Extensibility 5.3"
'-----------------------------
Sub RemoveModuleFromWorkbook(WB As Workbook, ModuleName As String)
    With WB.VBProject
        .VBComponents.Remove .VBComponents.Item(ModuleName)
    End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 216
Membres
103 158
dernier inscrit
laufin