Partager via

Copier les modules dans un nouveau classeur avec VBA

Anonyme
2021-03-08T14:24:05+00:00

Bonjour,

J'ai une macro qui m'exporte une partie de ma classeur source dans le but de le partager avec d'autres services.

Si cette macro exporte les feuilles de calculs ainsi que les formulaires : ce n'est pas le cas des modules où sont stockés la majorité des procédures qui permettant au fichier de fonctionner.

Voici l'extrait de la macro qui exporte les feuilles de classeur :

On Error Resume Next

  MkDir Chemin

  On Error GoTo 0

  'On copie les feuilles à garder

  Sheets(Array("Facture", "Réglages")).Copy 'respecter la casse

    With ActiveWorkbook

        .SaveAs Filename:=LeRep & LeNom, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

        .Close

    End With

Comment puis-je l'adapter afin que tous mes modules soient également copiés vers ce nouveau classeur ?

Merci d'avance,

Baptiste

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2021-03-08T16:25:40+00:00

Oups, désolé :

On Error Resume Next

MkDir Chemin

On Error GoTo 0

With ActiveWorkbook

.SaveAs Filename:=LeRep & LeNom, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

Application.DisplayAlerts = False

For Each Sh In Sheets

If Sh.Name <> "CROISEMENT APTn" And Sh.Name <> "Réglages" Then

  Sh.Delete

End If

Next Sh

.Close

End With

Application.DisplayAlerts = True

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

13 réponses supplémentaires

  1. DanielCo 107.7K Points de réputation
    2021-03-08T17:18:40+00:00

    Il faut le rouvrir avec un :

    WorkBooks.Open ...

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-03-08T16:48:06+00:00

    Re Daniel,

    On touche au but, les feuilles non voulues sont bien masquées dans mon fichier export.

    Toutefois, dans la version précédente de mon code, ce dernier me permettait de rester sur le fichier source après la procédure d'export.

    Actuellement, lorsque la procédure se termine mon fichier source est également fermé...

    Comme puis-je retrouver cette fonctionnalité ?

    Merci d'avance,

    Baptiste

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2021-03-08T15:38:34+00:00

    Bonjour Daniel,

    J'ai adapté votre code de sorte qu'il ferme le classeur d'export après avoir supprimé les feuilles en trop.

    On Error Resume Next

    MkDir Chemin

    On Error GoTo 0

    'On copie les feuilles à garder

    Sheets(Array("CROISEMENT APTn", "Réglages")).Copy 'respecter la casse

    With ActiveWorkbook

    .SaveAs Filename:=LeRep & LeNom, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    

    Application.DisplayAlerts = False

    For Each Sh In Sheets

    If Sh.Name <> "CROISEMENT APTn" And Sh.Name <> "Réglages" Then
    
      Sh.Delete
    
    End If
    

    Next Sh

    .Close

    End With

    Application.DisplayAlerts = True

    Toutefois, lorsque j'ouvre ce nouveau fichier, je constate que les feuilles en trop ont été supprimées mais aussi que les modules ne sont toujours pas présent.

    Cordialement,

    Baptiste

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. DanielCo 107.7K Points de réputation
    2021-03-08T15:18:39+00:00

    Bonjour,

    Il faut faire un "enregistrer sous" et supprimer les feuilles en trop :

    On Error Resume Next

    MkDir Chemin

    On Error GoTo 0

    Sheets(Array("Facture", "Réglages")).Copy 'respecter la casse

    ActiveWorkbook.SaveAs Filename:=LeRep & LeNom, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    Application.DisplayAlerts = False

    For Each Sh In Sheets

    If Sh.Name <> "Facture" And Sh.Name <> "Réglages" Then
    
      Sh.Delete
    
    End If
    

    Next Sh

    Application.DisplayAlerts = True

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire