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

Enregistrement d’une feuille dans un nouveau classeur

  • Initiateur de la discussion Initiateur de la discussion Luigi
  • 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 !

Luigi

XLDnaute Occasionnel
Bonjour à tous,
Avec une macro vba j’enregistre la feuille1 dans un autre classeur, mais dans cette feuille1, il y une macro qui est affecté à une case à cocher. La macro est enregistré dans un module.
Je voudrais que cette macro soit enregistré dans mon nouveau classeur avec la feuille 1, cela est-il possible ?

D’avance je vous remercie
 
Re : Enregistrement d’une feuille dans un nouveau classeur

Bonjour,

Un exemple avec la démarche suivante

1) Créez un nouveau classeur avec une feuille "Feuil1". Dans cette feuille mettez quelques données et créez une CheckBox.
2) Dans la fenêtre de code de Feuil1, copiez le code suivant

Code:
Private Sub CheckBox1_Click()
Call MacroAexporter
End Sub


3) Dans un module standard nommé Module1, copiez le code suivant

Code:
Sub MacroAexporter()
MsgBox Sheets("Feuil1").CheckBox1.Value
End Sub

4) Dans un AUTRE module standard, copiez le code suivant

Code:
'### Constantes à adapter ###
Const FEUILLE_EXPORT As String = "Feuil1"
Const TEMPO As String = "C:\___tempoPmo___"
Const MODULE_EXPORT As String = "Module1"
'############################

Sub ExportModuleInNewWorkbook()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim S1 As Worksheet
Dim S2 As Worksheet
Dim dummy
Set WB1 = ThisWorkbook
'--- Test de validité ---
On Error GoTo Erreur
dummy = WB1.VBProject.VBComponents.Count
On Error GoTo 0
'------------------------
Set S1 = Sheets(FEUILLE_EXPORT)
Set WB2 = Workbooks.Add(xlWBATWorksheet)
Set S2 = WB2.Sheets(1)
S2.Name = "____pmo"
S1.Copy After:=WB2.Sheets(1)
Application.DisplayAlerts = False
S2.Delete
WB1.VBProject.VBComponents(MODULE_EXPORT).Export TEMPO
WB2.VBProject.VBComponents.Import TEMPO
If Dir(TEMPO) <> "" Then Kill TEMPO
Exit Sub
Erreur:
If Err = 1004 Then
  MsgBox "Dans Excel faites menu Outils/Macros/Sécurité... et, dans l'onglet Editeurs approuvés," & vbCrLf & _
    "cochez la case Faire confiance au projet Visual Basic."
End If
End Sub


5) Dans Excel faites menu Outils/Macros/Sécurité... et, dans l'onglet Editeurs approuvés, cochez la case Faire confiance au projet Visual Basic.

Lancez la macro ExportModuleInNewWorkbook et Feuil1 sera copiée dans un nouveau classeur ainsi que le Module1.

Cordialement.

PMO
Patrick Morange
 
- 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
4
Affichages
482
Réponses
2
Affichages
169
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…