Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recopie de plusieurs macros à la fois

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

un internaute

XLDnaute Impliqué
Bonjour le forum,
Existerait-il un moyen de recopier plusieurs macros à la fois dans plusieurs classeurs?
Merci par avance pour vos éventuelles réponses
Bien cordialement à vous tous
 
Re : Recopie de plusieurs macros à la fois

Bonjour à tous


Le moyen existe.

Voir dans les archives du forum, les fils de discussions relatifs à ce sujet.

Pour les trouver utiliser ces mots-clés dans le moteur de recherche interne* du forum:
importer macros


EDITION:
Voici un exemple de fil qui devrait éclairer ta lanterne
https://www.excel-downloads.com/thr...jets-thisworkbook-vers-autre-classeur.170930/


NB: *: pour accéder au moteur de recherche, cliquer sur la loupe en haut à droite.
 
Dernière édition:
Re : Recopie de plusieurs macros à la fois

Bonjour Uninternaute, Jean-Marie

Il existe plusieurs moyens:

1 exemple:

Code:
'Copie_texte_VBA_dans_Module thisWorkbook de fichier 1 à fichier2
Sub AjouterCode_Bis()
'Stop
Dim iajcode As Byte
NomAct = ThisWorkbook.Name '"fichier1.xls"
NomAct2 = ActiveWorkbook.Name '"Fichier2.xls"
iajcode = Workbooks(NomAct).VBProject.VBComponents("Thisworkbook").CodeModule.CountOfLines
Workbooks(NomAct2).VBProject.VBComponents("Thisworkbook").CodeModule.AddFromString Workbooks(NomAct).VBProject.VBComponents("Thisworkbook").CodeModule.Lines(1, iajcode)
End Sub
 
Re : Recopie de plusieurs macros à la fois

Bonjour,

Voici une piste. Adapte le code (les commentaires du code t'expliquent ce qui se fait).
En gros, une fonction récupère le nom des classeurs du dossier passé en argument puis exporte le module que tu veux importer dans les autres classeurs, ouvre ces classeurs les uns après les autres, supprime l'ancien module et importe le nouveau, enregistre et ferme :
Code:
Sub Test()
    
    Dim Dossier As String
    Dim Chemin As String
    Dim NouveauModule As String
    Dim AncienModule As String
    Dim Tbl() As String
    Dim I As Integer
    
    'dossier où sont les classeurs à modifier
    Dossier = "E:\Mon Dossier\"
    
    'récupère le nom de tous les classeurs
    Tbl = RecupFichiers(Dossier)

    NouveauModule = "Module3" '<-- nom du module à exporter et importer
    AncienModule = "Module2" '<-- nom du module à supprimer le cas échéant !
    
    'module de mise à jour
    Chemin = ThisWorkbook.Path & "\" & NouveauModule & ".bas"

    'exporte le module dans le dossier du classeur actif, ne doit pas se trouver
    'dans le même dossier que les classeurs à mettre à jour
    ThisWorkbook.VBProject.VBComponents(NouveauModule).Export Chemin
    
    Application.ScreenUpdating = False
    
    'boucle sur les classeurs
    For I = 1 To UBound(Tbl)
    
        'ouvre le classeur cible, supprime l'ancier module et importe le nouveau
        With Workbooks.Open(Dossier & Tbl(I)).VBProject.VBComponents
    
            .Remove VBPAncienMod.VBComponents(AncienModule)
            .Import Chemin
    
        End With
        
        'enregistre et ferme
        Workbooks(Dossier & Tbl(I)).Save
        Workbooks(Dossier & Tbl(I)).Close
        
    'passe au suivant !
    Next I
    
    Application.ScreenUpdating = True
    
    'supprime le module du dossier
    Kill Chemin
    
End Sub

Function RecupFichiers(Chemin As String) As String()

    Dim TableauFichiers() As String
    Dim Fichier As String
    Dim I As Integer
    
    'boucle dans le dossier jusqu'à la fin des fichiers et rempli le tableau
    Fichier = Dir(Chemin & "*.xls")
    
    Do While (Len(Fichier) > 0)
    
        I = I + 1
        ReDim Preserve TableauFichiers(1 To I)
        TableauFichiers(I) = Fichier
        Fichier = Dir()
        
    Loop
    
    RecupFichiers = TableauFichiers()

End Function

Hervé.
 
Re : Recopie de plusieurs macros à la fois

Re, Bonjour MJ13, Theze

uninternaute
Précisions
Ne pas oublier de cocher cette case : Faire confiance au projet Visual Basic

et dans les références (Dans VBE : menu Outils/Références)
[X] Microsoft Visual Basic for Applications Extensibiilty 5.3

Sinon ces codes VBA afficheront des messages d'erreur.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
279
Réponses
15
Affichages
547
W
Réponses
5
Affichages
143
Réponses
16
Affichages
404
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…