Erreur 1004 sur un copier coller de module entre classeur

flolacou

XLDnaute Nouveau
Bonjour à tous, je vais encore vous demander votre aide pour une erreur que je ne comprend pas.

Voilà ma macro qui copie un module dans un nouveau classeur et un nouveau module créé.

Sub TransfertModule()

Dim S As String, Wbk As Workbook

With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule
S = .Lines(1, .CountOfLines)
End With

Set Wbk = Workbooks.Add

Wbk.VBProject.VBComponents.Add(1).Name = "Interdiction Copier Coller"
With Wbk.VBProject.VBComponents("Interdiction Copier Coller").CodeModule
.AddFromString S
End With

End Sub

Sauf que j'ai une erreur 1004 (Method "VBProject" of object "_Workbook" failed) avec la première ligne : With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule

Pourtant dans les références j'ai ajouté "Microsoft Visual Basic for Application Extensibility"

Si quelqu'un pourrait m'aider ce serais très gentils.
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Erreur 1004 sur un copier coller de module entre classeur

Salut Flolacou,

Plusieurs problème dans ton code
Code:
Sub TransfertModule()
Dim S As String, Wbk As Workbook
[COLOR=red][B]' Erreur 1004 si "Module1" n'existe pas dans le classeur[/B][/COLOR]
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
  S = .Lines(1, .CountOfLines)
End With
Set Wbk = Workbooks.Add
[B][COLOR=red]' Le nom du module ne doit pas contenir d'espace[/COLOR][/B]
Wbk.VBProject.VBComponents.Add(1).Name = "Interdiction_Copier_Coller"
 
With Wbk.VBProject.VBComponents("Interdiction_Copier_Coller").CodeModule
.AddFromString S
End With
End Sub

Voilà A+
 

flolacou

XLDnaute Nouveau
Re : Erreur 1004 sur un copier coller de module entre classeur

Merci pour ta réponse Bruno, mais c'est sur mon module existe
J'ai changer le nom du nouveau module dans le classeur créé mais je pense que l'erreur ne viens pas de là. Mais merci pour l'avoir précisé car j'aurais surement eu ce problème par la suite.

Juste une autre question, ma macro fait bien :
-enregistrer les macros dans le module2 du classeur ouvert
-créer un nouveau classeur
-créer un nouveau module dans le nouveau classeur
-copier le contenu du module2 dans le nouveau module du nouveau classeur
 
Dernière édition:

PMO2

XLDnaute Accro
Re : Erreur 1004 sur un copier coller de module entre classeur

Bonjour,

Une piste avec votre code corrigé ci-dessous

Code:
Sub TransfertModule()
Dim S As String
Dim Wbk As Workbook
On Error GoTo Erreur
With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule
  S = .Lines(1, .CountOfLines)
End With
'--- On supprime "Option Explicit" car on risque un conflit si       ---
'--- l'option "Déclaration des variables obligatoire" est en vigueur ---
S = Replace(S, "Option Explicit", "")
Set Wbk = Workbooks.Add
Wbk.VBProject.VBComponents.Add(1).Name = "Interdiction_Copier_Coller"
With Wbk.VBProject.VBComponents("Interdiction_Copier_Coller").CodeModule
  .AddFromString S
End With
Exit Sub
Erreur:
If Err = 1004 Then
  '--- Traduire éventuellement en chinois ou en anglais ---
  MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description & vbCrLf & vbCrLf & _
    "Dans Excel, faites menu Outils/Options/Sécurité..." & vbCrLf & _
    "Dans l'onglet ''Editeurs approuvés'' cochez la case" & vbCrLf & _
    "''Faire confiance au Projet Visual Basic''"
  '--------------------------------------------------------
End If
End Sub

L'erreur 1004 provient de la case "Faire confiance au Projet Visual Basic" non cochée.
Dans Excel, faites menu Outils/Options/Sécurité… et dans l'onglet ''Editeurs approuvés'' cochez la case susdite.
Dans le code, j'ai fabriqué une MsgBox indiquant ce qu'il faut faire.


Cordialement.

PMO
Patrick Morange
 

flolacou

XLDnaute Nouveau
Re : Erreur 1004 sur un copier coller de module entre classeur

Merci beaucoup PMO. En fait c'était l'option 'Faire confiance au Projet Visual Basic' que j'avais pas coché et merci pour le petit message supplémentaire ça fait plus professionnel.

Je rajoute la démarche pour Excel en anglais, ça peut toujours servir :
Tools/Option/Security/Macro security
puis dans l'onglet 'Trusted Publisher' cocher 'Trust access to Visual Basic Project'

A plus tout le monde.
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla