Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Superemi

XLDnaute Junior
Bonjour à tous, le forum,

Je souhaite qu'une macro me permette à partir d'1 fichier (Test), ouvrir un nouveau classeur et exécuter une macro à l'ouverture de ce nouveau classeur.
En PJ le fichier pour mieux comprendre.

J'ai déjà regardé les autres sujets relatifs à ma demande, mais aucun n'y répond.

Merci pour votre aide.

Superemi.
 

Pièces jointes

  • Test.xlsm
    19.4 KB · Affichages: 56
  • Test.xlsm
    19.4 KB · Affichages: 50

Papou-net

XLDnaute Barbatruc
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour Superemi,

Ta question est un peu floue: tu ne précises pas dans quel classeur doit se situer la macro.

S'il s'agit d'effectuer une seule action à la création du nouveau classeur à partir du classeur source, ça reste assez simple.

Par exemple, la procédure suivante écrit "Bonjour" dans la cellule A1 du nouveau classeur:

Code:
Private Sub CommandButton1_Click()
Workbooks.Add
With ActiveWorkbook
  .Sheets(1).Range("A1") = "Bonjour"
End With
End Sub
Si la macro doit être incorporée au nouveau classeur, tout dépend si tu désires copier une macro existant dans le fichier source ou si tu désires la créer de toute pièce. Les deux solutions sont possibles mais ça complique un peu la démarche.

Cordialement.
 

Superemi

XLDnaute Junior
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour Papou-net,

Pour être plus clair, je clique sur mon bouton de la feuille 'Test', cela lance la macro (se trouvant sur 'Test') pour ouvrir un nouveau classeur.
=> Cette partie là j'y arrive, cela correspond à ton code.

Par contre dès l'ouverture du nouveau classeur, je souhaiterai que les codes ci-dessous soient actifs sur le nouveau classeur :

Code :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ThisWorkbook.Saved = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub

Et ça je n'y arrive pas, car d'habitude ces codes se trouvent dans 'This Workbook', mais comment les mettre "automatiquement" dans 'This Worbook' du nouveau classeur ?

En espérant avoir été plus clair.

Superemi.
 

Papou-net

XLDnaute Barbatruc
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour Superemi,

Ok c'est plus clair et c'est bien ce que je pensais.

Voici donc en PJ le code modifié qui crée un nouveau classeur et qui y intègre le Module1:

Code:
Private Sub CommandButton1_Click()
Dim vCod As String, vObj As Object
    
' Sélectionne le module à copier
Set vObj = Application.VBE.ActiveVBProject.VBComponents.Item("Module1")
' Place le code à copier dans la variable vCod
vCod = vObj.CodeModule.Lines(1, vObj.CodeModule.CountOfLines)
' Crée un nouveau classeur
Workbooks.Add
  With ActiveWorkbook
    ' Crée un nouveau module dans le nouveau classeur
    .Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
    ' Insère le code dans le nouveau module
    .Application.VBE.ActiveVBProject.VBComponents.Item("Module1").CodeModule.AddFromString (vCod)
  End With
End Sub
Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • Copie de Test Superemi.xlsm
    22.3 KB · Affichages: 77

Superemi

XLDnaute Junior
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour Papou-net,

Hélas quand je clique sur le bouton, voici ce qui se passe :
- 1er message : "L'accès au programme au projet Visual Basic n'est pas fiable." -> Je clique sur Fin, je reclique sur le bouton.
- 2ème message : "La méthode 'VBE' de l'objet '_Application' a échoué."

De plus, est-il possible de copier le contenu du module 1 du fichier Test dans le This Workbook du nouveau fichier.

Merci pour ton aide.

Cordialement,
Superemi.
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour,

1er message : "L'accès au programme au projet Visual Basic n'est pas fiable." -> Je clique sur Fin, je reclique sur le bouton.

dans les options excel => centre de gestion de la confidentialité => paramètre des macros => coches "accès approuvé au modèle d'objet du projet vba"...

bonne journée
@+
 

Papou-net

XLDnaute Barbatruc
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour Superemi, Pierrot, le Forum,

Chez moi ça fonctionne sans message d'erreur.

Pour placer le code dans ThisWorkbook, il suffit de remplacer "Module1" par cette nouvelle destination:

Code:
.Application.VBE.ActiveVBProject.VBComponents.Item("ThisWorkbook").CodeModule.AddFromString (vCod)

A tout hasard, les références suivantes doivent être chargées:

BwMf0PGJwhc7AAAAAElFTkSuQmCC

Cordialement.
 

Pièces jointes

  • References VBE.jpg
    References VBE.jpg
    120.3 KB · Affichages: 114
Dernière édition:

Superemi

XLDnaute Junior
Re : Ouvrir nouveau classeur + exécuter macro dans ce nouveau classeur excel VBA

Bonjour à tous, Papou-net, Pierrot,

Pierrot : Merci pour l'info ! Il y a toujours une case à cocher / décocher dans l'histoire ...
Papou-net : Merci, le bouton fonctionne comme je le souhaite, c'est super !

Cordialement,
Superemi.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87