Exporter/Importer plusieurs modules en une fois

Pegase

XLDnaute Nouveau
Bonjour à tous,

Pour une association, j'ai créé un fichier excel avec de nombreuses macros donc de nombreux modules. Or au fils des jours "j'améliore" ou ajoute des fonctions qui souvent modifient plusieurs modules. Mais ce fichier est quotidiennement remis à jour par d'autre membres.

Comment puis je faire pour Exporter, en une seule fois, la totalité des Modules et ensuite les importer, également en une seule fois, dans le dernier fichier à jour.

D'avance merci pour vos réponses
Pégase
 

Eric 45

XLDnaute Occasionnel
Re : Exporter/Importer plusieurs modules en une fois

Bonjour à tous
Bonjour Pégase

Tout d'abord combien as tu de macros et combien de modules ?

Tu peux regrouper plusieurs macros dans un seul module, voir toutes.

Et après tu ouvres les 2 fichiers et tu fais un copier/coller, je ne vois que cela à faire, en détruisant les modules qui ne servent à rien dans le fichier définitif.

A+
 

Pegase

XLDnaute Nouveau
Re : Exporter/Importer plusieurs modules en une fois

Merci Eric de ta réponse, j'y avais bien sur pensé mais j'ai une trentaine de modules et déjà plusieurs macros dans un certain nombre de modules.
En fait j'ai déjà regroupé dans un même module les macros relatives à une fonction commune.
C'est un fichier de gestion bancaire qui me permet de "presque" tout faire genre "Money" de Microsoft mais qui me permet en plus de sortir des récapitulatif par TCD, d'aller chercher des informations sur un fichier "Membres", de faire des corrections quasi-automatiques quand un membre fait une faute de frappe, de faire des sauvegardes sur 2 PC différents via le réseau...

Peut être que quelqu'un aura une autre idée...
Merci
 

Eric 45

XLDnaute Occasionnel
Re : Exporter/Importer plusieurs modules en une fois

Bonjour le forum
Bonjour Pégase

J'ai retrouvé un fil sur lequel Thierry a donné pleins d'astuces ( Merci Thierry ):

>>> DATABASE XLD <<< RECENCEMENT FIL >> 21649 "VBA Effacement/Ecriture Macro" commencé le 10-03-03

tu devrais trouver ton bonheur au fil de cette discution

A+
 

MichelXld

XLDnaute Barbatruc
Re : Exporter/Importer plusieurs modules en une fois

bonsoir Pegase et Eric

Effectivement, notre ami Thierry avait proposé une démo à ce sujet mais je n'arrive pas à retrouver le lien dans les archives. En attendant tu peux tester et adapter cette procédure:

Code:
Sub Export_Import_Module_Et_Userform()
Dim Wb As Workbook
Dim i As Byte
'-----------------------------------
'Export du UserForm1 et de 3 Modules nommés
'Module1 , Module2 et Module3 , qui sont dans le classeur
'contenant cette macro.
ThisWorkbook.VBProject.VBComponents("UserForm1").Export _
    "C:\copieUSF.frm"

For i = 1 To 3
ThisWorkbook.VBProject.VBComponents("Module" & i).Export _
    "C:\copieModule" & i & ".bas"
Next i
'-----------------------------------

'Ouverture du Classeur d'import
Set Wb = Workbooks.Open("C:\Le Classeur.xls")
'la procedure ne gère pas les erreurs si le nom des modules
'existe deja dans le classeur d'import.
With Wb.VBProject 'transfert l'USF et les modules dans les classeurs
    .VBComponents.Import "C:\copieUSF.frm"
    For i = 1 To 3
        .VBComponents.Import "C:\copieModule" & i & ".bas"
    Next i
End With
'Ferme le classeur d'import en sauvegardant les modifs
Wb.Close True
End Sub


Bonne soirée
MichelXld
 

Ti_

Nous a quitté
Repose en paix
Re : Exporter/Importer plusieurs modules en une fois

Salut

je fais une petite intrusion dans ce fil pour signaler que sur de nombreuses machines, la ligne :

.VBComponents.Import "..."
de même que
.VBComponents.Export "..."

risquera d'affoler les anti-virus qui la considéreront comme la signature d'un virus. Certains anti-virus se contenteront de vous le signaler, et vous pourrez alors ignorer cette alerte, mais d'autres, plus intrusifs, ne s'arrêteront pas là et iront jusqu'à supprimer les macros du fichier.
 

Pegase

XLDnaute Nouveau
Re : Exporter/Importer plusieurs modules en une fois

Bonsoir à tous, me voici de retour et j'ai bien avancé

Et tout d'abord un grand merci à Michel et à Eric et à leur lien grace à qui j'ai réussi.

J'ai adapter une 1ière macro CopieCodeModule pour copier dans un autre fichier les modules.
Mais ceci avait pour effet d'ajouter au fichier "Fichier_new.xls" les modules du Fichier "Fichier_old.xls" et non de les remplacer.
J'ai donc écris une 2ième macro Supprime_Macro pour commencer par les supprimer.
Pour essayer de ne pas être géné par le nombre des modules qui peut évolué, j'ai géré au mieux les erreurs.
La seule conditions que je n'ai pas réussi à gérer, c'est dans le cas où il y a un "trou dans la numérotation des modules (ex module1, module2, module4, module5). Seul les modules 1 et 2 seront copiés


Code:
Sub CopieCodeModule()
    Dim S As String, I As Byte, WbkNew As Workbook, WbkOld As Workbook
    
    Supprime_Macro
    
    For I = 1 To 99
       ModuleX = "Module" & I
       Set WbkOld = Workbooks("Fichier_old.xls")
       Workbooks("Fichier_old.xls").Activate
       On Error GoTo Fin
          With ActiveWorkbook.VBProject.VBComponents(ModuleX).CodeModule
              S = .Lines(1, .CountOfLines)
          End With
        
       Set WbkNew = Workbooks("Fichier_new.xls")
            WbkNew.VBProject.VBComponents.Add 1
          With WbkNew.VBProject.VBComponents(ModuleX).CodeModule
              .AddFromString S
          End With
    
    Next I
Fin:
End Sub


Code:
Sub Supprime_Macro()
    Dim I As Byte, WbkNew As Workbook
    Set WbkNew = Workbooks("Fichier_new.xls")
    
    For I = 1 To 99
        ModuleX = "Module" & I
    On Error Resume Next
        WbkNew.VBProject.VBComponents.Remove WbkNew.VBProject.VBComponents(ModuleX)
    Next I
End Sub

Bien sur je suis preneur de tous conseils, remarques, suggestions...

Encore Merci
Pégase
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16