Copier Module vers autre classeur

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

  • Noms.xlsm
    26.3 KB · Affichages: 42
  • Noms.xlsm
    26.3 KB · Affichages: 46
  • Noms.xlsm
    26.3 KB · Affichages: 44

Dranreb

XLDnaute Barbatruc
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.
À +
 

Hulk

XLDnaute Barbatruc
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 :confused:
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

  • Noms.xlsm
    25.9 KB · Affichages: 36
  • Noms.xlsm
    25.9 KB · Affichages: 35
  • Noms.xlsm
    25.9 KB · Affichages: 36

Dranreb

XLDnaute Barbatruc
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 +
 

Hulk

XLDnaute Barbatruc
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 :confused:

Ben je tourne en rond...
 
Dernière édition:

Hulk

XLDnaute Barbatruc
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 ?
 

Dranreb

XLDnaute Barbatruc
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:

Yaloo

XLDnaute Barbatruc
Re : Copier Module vers autre classeur

Re,

Voici ton fichier modifié, j'ai changer l'ordre d'enregistrement.

Vois si ça te convient. (j'espère avoir bien compris ta demande)

A+
 

Pièces jointes

  • Noms.xlsm
    27 KB · Affichages: 68
  • Noms.xlsm
    27 KB · Affichages: 68
  • Noms.xlsm
    27 KB · Affichages: 69

Yaloo

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94