Copie automatique macro vers un nouveau classeur

Bonjour,

Je m'appelle Charles, après avoir passé des heures entières sur ce forum il me reste quelques interrogations. Voila pourquoi je suis nouveau parmi vous. je vous remercie pour votre acceuil et pour votre aide future dans ce forum qui me semble très actif.

j'ai crée un userfom qui me permet de créer un nouveau classeur à partir du document initial et en cliquant sur le bouton valider du userform.

  • Mon classeur initial s'appelle "AFI essai macro V3"
  • Le classeur créé est nommé en fonction des informations rentrées dans le userfom (Nom1 et Nom2), ce qui nous donne dans le code :
ActiveWorkbook.SaveAs "Synthèse Financière" & " " & Nom2 & " " & Nom1

- Ensuite, je copie les onglets du classeur initial vers le classeur crée

Voici ma problématique:

Ces onglets possèdent des macro en version userform et module. Le problème est que je n'arrive pas à copier ni le code d'un userform, ni celui d'un module vers le nouveau document.

Pour résumer, ma question est : Comment copier les macros des onglets sur un classeur nouvellement crée?

  • Quand je lance la macro, un troisième classeur excel se crée en plus du classeur appelé "Synthèse Financière" & " " & Nom2 & " " & Nom1
  • Ce troisième classeur contient bien contient bien ma macro du userfom. Je souhaiterais cependant que ce troisième classeur ne soit pas crée et que la macro soit directement copiée dans mon classeur "Synthèse Financière" & " " & Nom2 & " " & Nom1.

Voici la macro:

'activation du bouton valider'

Private Sub CommandButton_valider_Click()

'on cree et on renomme un nouveau classeur'

'création de l'objet excel'

Dim Nom1 As String

Dim Nom2 As String

Nom1 = TextBox_nom_de_la_societe

Nom2 = TextBox_nature_de_l_operation

'copie onglets'

Worksheets(Array(" Données initiales", " Liasse", "Contrôles liasses", "Retraitement", "Actif", "Passif", "Compte de résultat", "BFR", "Flux", "Ratios", "Synthèse")).Copy

'nomination du nouveau dossier'

ActiveWorkbook.SaveAs "Synthèse Financière" & " " & Nom2 & " " & Nom1

C'est ici que ca bug

'essai copie un userform'

Private Sub CommandButton1_Click()

Workbooks("AFI essai macro V3.xlsm").VBProject.VBComponents("Userform1").Expo rt "frmtoto"

Sheets(1).Copy

ActiveWorkbook.VBProject.VBComponents.Import "frmtoto"

'fermer le userform'

Unload UserForm_creation_synthese

'message enregistrement nouveau dossier'

Call MsgBox("Veuillez enregistrer ce dossier nouvellement crée", , "Nouvelle synthèse créée")

End Sub

Je vous remercie

Bonjour Devaux le forum

bon j'ai pas lu jusqu’au bout de ton post mais , je pense que tu as un souci car le fait de copier une feuille normalement le code est copié avec!!!

alors si tu peux passe moi ton fichier avec les explications dedans et je te regarde cela

a+

papou

Bonjour,

Voici mon document initial auquel j'y ai rajouté des explications sur le premier onglet

Je vous remercie

Charles


Pour information,

Ne vous inquiétez pas pour les liaisons, mes modèles ne sont pas encore définitifs, mais ce n'est pas la problématique aujourd'hui

Merci

Charles

Bonjour

En attendant la réponse de Paritec (que je salue)

Modification de la macroPrivate Sub CommandButton_valider_Click() dans le code de UserForm_creation_synthese

merci,

j'ai passé mon après midi dessus et ca a l"air de marcher ,

voici ce que j'ai modifié

Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("UserForm_ajouter_année").Export "essai"

ActiveWorkbook.VBProject.VBComponents.Import "essai"

Je vais regarder votre document avec attention vous avez surrement trouvé une solution plus intéréssante que la mienne

Je vous remercie

Charles


Bonjour Banzai64,

jai regardé votre dossier,

De ce que j'ai compris, la différence entre votre document et le mien et que vous précisez le nom de l'export avant, à savoir :

Nom = "c:\Userform_ajouter_année.frm"

WbkA.VBProject.VBComponents("Userform_ajouter_année").Export Nom

et là la macro plante et le message 'export ne fonctionne pas' s'affiche

En fait, je ne comprends pas cettre expression :

c:\Userform_ajouter_année.frm

dans Nom = "c:\Userform_ajouter_année.frm"

Est le nom ou l'adresse ? Si c'est l'adresse , comment cela se traduit il? Un fichier est il créé automatiquement ?

Cordialement

Charles

Bonjour

Même principe que tu utilises

Moi j'indique le chemin et le nom

J'ai testé chez moi avant de l'envoyer et j'obtiens bien un autre fichier avec les deux Usf

Pour info, Je te joins le fichier que j'ai obtenu

Edit:

Erreur de frappe (on ne voit pas les deux points ) mais c'est

Nom = "c:\Userform_ajouter_année.frm"

Bonsoir Banzaï devaux le forum

bon alors j'arrive après la bataille mais je vous salue tous les deux, et comme c'est résolu

a+

papou

Bonsoir Parictec

hé non ce n'est pas résolu

J'attends sa réponse

Mais si tu as une solution n'hésites pas

Amicalement

Bonjour Banzaï devaux, le forum

bon alors je vais regarder de plus prêt ce que tu as déjà fait et proposé à Devaux

a+

papou

Bonjour Devaux Banzaï le forum

bon alors le premier Userform c'est bien le Création Nouvelle Synthèse? si oui pourquoi ne pas faire une copie du classeur et après retirer la feuille "Création de Synthése" ?? là tu aurais toutes tes macros et Userform, et au besoin après tu fais le ménage.

Enfin c'est comme cela que je vois la chose, plus simple et plus rapide, qu'en pensez vous Charles et Banzaï (et les autres aussi)

a vous relire

a+

papou

Bonjour,

ca marche mais je n'arrive pas à tuer et supprmier ce fichier de transition appelé Nom.frx. Il se truve dans "mes documents" c'est embetant car l'utilisateur final sera étonné de retrouver ce fichier dans sesdocuments .

Je rencontre un autre problème. Le nouveau fichier crée est automatiquement enregistré dans mes documents en .xls. Je demande justement à l'utilisateur de l'enregistrer dans sur son ordinateur. Savez vous s'il est possible de faire en sorte pour ne pas que ce nouveau fichier créé s'enregistre automatiquement dans mes documents,?

je vous renvoie mon fichier excel

Cordialement

Charles

Bonjour

Regardes avec cette macro

Private Sub CommandButton_valider_Click()
'on cree et on renomme un nouveau classeur'
'création de l'objet excel'
Dim Nom1 As String
Dim Nom2 As String

  Nom1 = TextBox_nom_de_la_societe
  Nom2 = TextBox_nature_de_l_operation

  'copie onglets'
  Worksheets(Array(" Données initiales", " Liasse", "Contrôles liasses", "Retraitement", "Actif", "Passif", "Compte de résultat", "BFR", "Flux", "Ratios", "Synthèse")).Copy

  'nommination du nouveau dossier
  ' Ajouter l'extension adéquate (ou avec SaveAs voir les options avec 2007)
  ActiveWorkbook.SaveAs "Synthèse Financière" & " " & Nom2 & " " & Nom1 & ".xls"

  'ajout des macro
  Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("UserForm_ajouter_année").Export "Nom"
  ActiveWorkbook.VBProject.VBComponents.Import "Nom"
  Kill "Nom"
  Kill "Nom.frx"

  Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("Données_initiales").Export "Nom"
  ActiveWorkbook.VBProject.VBComponents.Import "Nom"
  Kill "Nom"

  Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("UserForm_supprimer_année").Export "Nom"
  ActiveWorkbook.VBProject.VBComponents.Import "Nom"
  Kill "Nom"
  Kill "Nom.frx"

  'fermer le userform'
  Unload UserForm_creation_synthese

  ' Sauvegarde du fichier crée et fermeture
  With ActiveWorkbook
    .Save
    .Close
  End With
End Sub

Merci Banzai64,

Ca marche, le fichier qui enregistre la macro nom ou nom.frx est bien supprimé. Merci pour ton aide.

J'ai rajouté Kill "Name.frx" après les "kill name

Par contre, j'ai toujours mon document crée en doublon dans mes document, je ne sias pas s'il y a un moyen de le supprimer. cela reste un détail.

Charle

Bonjour

Bizarre

devaux a écrit :

j'ai toujours mon document crée en doublon dans mes document

J'ai fait des tests avec la macro modifiée et je n'ai qu'un seul fichier dans "Mes documents"

Quel nom porte le doublon ?

Vérifies bien

selon la fin de mon code, l'utilisateur enregistre son nouveau document dans le fichiers qu'il souhaite car j'active l'ouverture de l'onglet "enregistrer sous"

je souhaiterai dès lors pouvoir supprimer automatiquement mon document enregistré automatiquement qui se trouve dans mes documents pour éviter les doublons.

En effet, mon utilisateur n'enregistre son fichier dans mes documents mais directement dans le dossier de son choix

'ferme le usf si clique sur annuler'
Private Sub CommandButton_annuler_Click()

Unload Me
End Sub

'activation du bouton valider'
Private Sub CommandButton_valider_Click()

    'on cree et on renomme un nouveau classeur'
        'création de l'objet excel'
        Dim Nom1 As String
        Dim Nom2 As String
        Dim Nom As String

        Nom1 = TextBox_nom_de_la_societe
        Nom2 = TextBox_nature_de_l_operation

      'copie onglets'
      Worksheets(Array(" Données initiales", " Liasse", "Contrôles liasses", "Retraitement", "Actif", "Passif", "Compte de résultat", "BFR", "Flux", "Ratios", "Synthèse")).Copy

    'nommination du nouveau dossier'

    ActiveWorkbook.SaveAs "Synthèse Financière" & " " & Nom2 & " " & Nom1

'ajout des macro

Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("UserForm_ajouter_année").Export "Nom"

ActiveWorkbook.VBProject.VBComponents.Import "Nom"
Kill "Nom"
Kill "Nom.frx"

Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("Données_initiales").Export "Nom"

ActiveWorkbook.VBProject.VBComponents.Import "Nom"
Kill "Nom"

Workbooks("AFI essai macro V4.xlsm").VBProject.VBComponents.Item("UserForm_supprimer_année").Export "Nom"

ActiveWorkbook.VBProject.VBComponents.Import "Nom"
Kill "Nom"
Kill "Nom.frx"

    'fermer le userform'
    Unload UserForm_creation_synthese

    'message enregistrement nouveau dossier'
Call MsgBox("Veuillez enregistrer en format EXCEL PRENANT EN CHARGE LES MACRO", , "Important")

CommandBars(1).Controls(1).Controls(5).Execute

End Sub

Private Sub UserForm_Click()

End Sub
Rechercher des sujets similaires à "copie automatique macro nouveau classeur"