Exporter feuille avec macro

Romain -  
 Romain -
Bonjour,

J'ai un fichier excel avec plusieurs onglets : Voiture, Moto, Bateau. Ces onglets sont construits de la même manière et font tous appel à la même macro "module1".

Ce fichier est un "master", et ainsi me sert de modèle. Je souhaiterais pouvoir exporter 1 seul onglet dans mes documents (par exemple n'enregistrer que "Voiture.xlsm" depuis mon master) et que la macro associée à cette feuille fonctionne toujours.

Je me pose donc la question : Faut il, pour chaque feuille réécrire la macro ? ou bien que faut il faire ???

Avez vous des idées ?

Cordialement

Romain

8 réponses

  1. eljojo_e Messages postés 1255 Statut Membre 155
     
    Bonjour,

    Je te propose de faire un enregistrer sous, et soit de supprimer les deux onglet que tu veux pas soit de les cacher.
    Comme ça tu conserve tout.

    C'est bien ça que tu veux ?
    2
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour a vous deux,

    Si une macro par feuille, copie dans un autre classeur suffi (en code VBA)

    Si une seule macro dans un module, faire copie dans autre classeur et allez sur ce site pour un exemple de copie de macro dans un autre calsseur (le tout en VBA bien sur)

    https://www.developpez.net/forums/d604294/logiciels/microsoft-office/excel/macros-vba-excel/copier-macro-vba-d-classeur/

    A+
    1
    1. Romain
       
      Bonjour et merci pour ta réponse. A vrai dire j'ai deux modules associés à deux boutons différents dans chaque feuille ! Je suppose donc que je cvais devoir refaire une macro pour exporter (si j'ai bien compris ?)

      A+
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Oui, faire une macro pour copier un onglet dans un autre classeur. Avec l'enregistreur de macro, vous creer le corps du code et ensuite vous adaptez pour le nom du classeur cree.

      A+
      0
    3. Romain
       
      Donc aucun moyen de faire cela "simplement". Je pensais qu'il aurait été possible de faire un "Drag&Drop" de la feuille vers une autre instance d'Excel....

      Merci pour tes réponses !
      0
  3. Maurice
     
    Bonjour
    Voila une macro qui peur le faire
    a toi de voir si ca te convient
    Bien sur il faut faire un peux de menage

    Sub ExportXLS()
    Application.ScreenUpdating = False
    'Crée une copie de la Feuil1 dans un nouveau classeur
    Chemin = ActiveWorkbook.Path
    NomFiche = F05.Range("B15")
    ChemFiche = Chemin & "\" & NomFiche & ".xls"
    Temp = F06.Name
    On Error GoTo Erreur
    F06.Copy
    ActiveWorkbook.Activate
    Sheets(Temp).Name = NomFiche
    For Each Shap In ActiveSheet.Shapes
    If Shap.Name <> "Logo2" And Shap.Name <> "Logo3" Then
    Shap.Delete
    End If
    Next
    ActiveWindow.FreezePanes = False
    Rows("1:1").Delete
    Range("A1").Select
    'Sauvegarde la copie
    ActiveWorkbook.SaveAs ChemFiche
    'Ferme le classeur sauvegardé
    ActiveWorkbook.Close True
    Application.ScreenUpdating = True
    MsgBox "Création dans " & ChemFiche
    F04.Select
    Exit Sub
    Erreur:
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Err.Clear
    Application.DisplayAlerts = True
    F04.Select
    'F05.Visible = 2
    End Sub

    A+
    1
    1. Romain
       
      Merci pour cette macro qui à l'air pas mal ! Je vais essayer comme cela
      0
    2. Romain
       
      Après adaptation, cela fonctionne bien, mais ne copie pas les modules :( Sachant que c'est le coeur de mon fichier Excel...

      Quelqu'un aurait il une idée ? est il possible d'adapter cette macro pour qu'elle copie aussi les modules ?
      0
  4. Romain
     
    Re,

    J'ai finalement fait comme eljojo_e l'a proposé. En effet, cette solution reste plus légère en terme de code, ainsi qu'en terme de manipulation de fichiers. De plus elle est plus rapide. C'est donc la meilleur solution à adapter :

    - on supprime tous les onglets qui ne nous interessent pas dans une boucle
    - on fait un "enregistrer sous"
    - on ferme le classeur sans l'enregistrer

    Ainsi, on garde le master tel quel et on obtient le résultat : la feuille enregistrée avec toutes les macros dans un fichier à part, sans avoir eu à manipuler une macro !

    Encore merci eljojo_e pour cette solution, et merci à f894009 pour m'avoir proposé ta solution.

    A+
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Romain
     
    Bonjour,

    Oui c'est ca que je veux faire, mais j'aurais souhaité que l'utilisateur n'ai rien à faire. Mon classeur final va comporter une vingtaine de feuilles ! Je me vois mal dire à mon utilisateur "supprime les 19 feuilles dont tu n'as pas besoin". C'est pour cela que j'aurais souhaité n'exporter qu'une seule feuille avec le module1. Que ce soit via un menu d'excel ou une macro, peu m'importe !

    Merci quand même pour ta réponse !
    0
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,
    "Drag&Drop" de la feuille vers une autre instance d'Excel... Si dans la meme instance d'excel et c'est un move de l'onglet (couper/coller ou deplacer) dans le 2eme classeur qui doit etre ouvert. Ceci sans macro, par contre gerer la sauvegarde manuellement.

    A vous de voir
    macro: vous avez deux solutions qui vous ont ete proposees

    sans macro: probleme de gestion sauvegarde

    A+
    0
    1. Romain
       
      Exact, le constat est sans appel : macro.

      Merci à vous deux !
      0
  8. Romain
     
    Après adaptation, cela fonctionne bien, mais ne copie pas les modules :( Sachant que c'est le coeur de mon fichier Excel...

    Quelqu'un aurait il une idée ? est il possible d'adapter cette macro pour qu'elle copie aussi les modules ? ?
    0
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Auriez-vous la memoire courte????? je vous ai postez un lien voir f894009 28 févr. 2013 à 10:36

    A+
    0
    1. Romain
       
      Auriez-vous la memoire courte?????

      Non je n'ai pas la mémoire courte!!!!!

      C'est seulement qu'après avoir lu les deux liens, ce que j'observe c'est une exportation de fichiers de macros. J'en déduit donc qu'il faut les réimporter par la suite. Seulement je ne vois pas comment le faire via ma premiere feuille, car une fois la feuille copiée et les modules exportés, il faut bien les réimporter... C'est donc pour celà que je viens sur ce forum, en esperant trouver de l'aide à mon problème
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      exporter est en realite un copier/coller, pas un couper/coller

      J'en déduit donc qu'il faut les réimporter par la suite Petite explication SVP

      c'est une exportation de fichiers de macros Vous pouvez "exporter" la macro que vous voulez
      0
    3. eljojo_e Messages postés 1255 Statut Membre 155
       
      Lol je reste sur ma position, tu place un bouton par feuille, et chaque bouton supprime toute les feuilles (sauf celle où il y a le bouton) et tu fait un enregistrer sous <- qui se fait par macro.
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      Oui,c'est une facon de faire, mais ce que je propose se fait aussi par du VBA, il suffit de savoir comment.

      Bye
      0