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

Copier Module vers autre classeur

  • Initiateur de la discussion Initiateur de la discussion Hulk
  • Date de début Date de début

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 !

Hulk

XLDnaute Barbatruc
Hello tout le monde 🙂

J'ai une macro qui crée un dossier, et dans ce dossier, crée des classeurs avec une liste de nom. -> OK

Mais je souhaite aussi qu'il copie le module1 du classeur source, mais là il bloque...

Il ne crée que un classeur alors que dans l'exemple il devrait en créer 4.

J'ai entouré la partie qui m'intéresse avec la ligne qui coince.

Si une bonne âme voulait m'aider.

Merci d'avance !
 

Pièces jointes

Re : Copier Module vers autre classeur

Bonsoir.
Juste une question : au 2ième passage dans la boucle quelle est la feuille active de quel classeur actif au moment du "nom = Cells(i, 1)"
Je ne le dirai jamais assez, il faut toujours qualifier Cells ou Range d'une expression Worksheet.
De préférence un CodeName de feuille si c'est une feuille de ThisWorkbook,
À défaut une variable As Worksheet convenablement initialisée si c'est une feuille d'un autre classeur.
À +
 
Re : Copier Module vers autre classeur

Re,

Heu au risque de paraître be-bête, j'suis pas sur de comprendre...

J'ai tenté de faire autre chose (voir fichier joint) mais sans succès.
Il coince toujours sur la ligne "classeur_export.Close"

Ce que je ne comprends pas, c'est que si je fais la macro sans le bout de code ci-dessous (création du module), il exécute la macro nickel 😕
Code:
        With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
            S = .Lines(1, .CountOfLines)
        End With
  
        Set Wbk = Workbooks.Open(nom_dossier & "\" & nom_fichier_en_cours)
    
        With Wbk
            With .VBProject.VBComponents.Add(1)
                .CodeModule.AddFromString S
            End With
        End With
 

Pièces jointes

Re : Copier Module vers autre classeur

Bon.
Alors il n'y a qu'à exécuter une seule fois au début cette instruction qui récupérer le String S.
Et le réutiliser à chaque fois. Le ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines ne changera pas d'un passage à l'autre dans la boucle !
A +
 
Re : Copier Module vers autre classeur

Yep,

Je ne pense pas que c'est ça Yaloo...

Chez moi il crée bien le premier classeur (Nom A.xls) avec le module1 et la macro, mais j'ai un message d'erreur (Erreur Automation) et il s'arrête sur
Code:
classeur_export.Close
Et si à la place je mets
Code:
ActiveWorkbook.Close
il crée bien les quatre classeurs mais sans leurs modules 😕

Ben je tourne en rond...
 
Dernière édition:
Re : Copier Module vers autre classeur

Dranreb j'ai essayé en placant avant la boucle...
Code:
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
        S = .Lines(1, .CountOfLines)
    End With
mais idem erreur sur "classeur_export.Close".

C'est ce que tu voulais dire ?
 
Re : Copier Module vers autre classeur

Je commence peut être à entrevoir quelque chose:
Il n'y a pas de Close entre SaveAs et plus loin Open du même classeur.
Comme on est en DisplayAlerts = False, il assume sans doute Oui à la question qu'il vous poserait à tentative d'ouvrir un classeur portant le même nom qu'un classeur déjà ouvert. Dans ce cas je pense que classeur_export n'est plus initialisé après réouverture, parce que c'est un autre objet WorkBook. D'ailleurs Wbk.Close serait plus logique pour faire ça.
Ou alors pour ne pas changer le nom du classeur ouvert faire classeur_export.SaveCopyAs
D’ailleurs pourquoi ce Save puis ce Open ? Il doit y avoir une raison mais je ne vois pas laquelle. Ça ne va pas en le fermant avec sauvegarde seulement à la fin, quand tout est fait ?
Cordialement.
 
Dernière édition:
Re : Copier Module vers autre classeur

Re,

Il fallait copier ton code avant, faire l'enregistrement et fermer le classeur actif. C'est vrai que, de temps en temps, on tourne, on tourne .... alors que ce n'est pas très loin.

A+
 
- 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
7
Affichages
262
  • Question Question
Microsoft 365 Classeur Disparu
Réponses
2
Affichages
570
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…