XL 2013 Exporter Onglets dans un nouveau classeur (VBA)

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

susaita

XLDnaute Occasionnel
Bonsoir à tous,
dans le fichier ci-inclus j'ai 3 onglets que je veux copier dans un nouveau classeur avec les conditions suivantes :

*le nouveau fichier garde les formules
*le nouvau fichier créé sera fermé
*le nouvau classeur créé prendra DS comme nom
*le fichier créé (DS) je veux qu'il soit dans le même dossier que le fichier ventes
*ne pas garder les boutons qui se trouvent dans les onglets
*ne pas garder le code vba dans le nouveau classeur
*les onglets crées doivent garder leur couleur d'origines (rouge,vert et bleu)
*la hauteur des lignes et la largeur es colonnes restera la même que celle du classeur d'origine

Merci d'avance
 

Pièces jointes

Dernière édition:
Bonjour.
Je dirais comme ça à priori :
VB:
Sub Exporter()
Dim WbkDst As Workbook
ThisWorkbook.Sheets("1").Copy
Set WbkDst = ActiveWorkbook
ThisWorkbook.Sheets("2").Copy After:=WbkDst.Sheets(1)
ThisWorkbook.Sheets("3").Copy After:=WbkDst.Sheets(2)
WbkDst.ChangeLink Name:=ThisWorkbook.Name, NewName:=WbkDst.Name, Type:=xlExcelLinks
WbkDst.Sheets("1").Shapes("Button 1").Delete
WbkDst.SaveAs Filename:=ThisWorkbook.Path & "\DS.xlsx", _
  FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
WbkDst.Close
End Sub
 
Dernière édition:
Bonjour susaita, Bernard, Jacky67,

Ou aussi :
Code:
Sub Exporter()
Dim chemin$
chemin = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs chemin & "DS.xlsm"
With Workbooks.Open(chemin & "DS.xlsm")
  .Sheets(1).DrawingObjects.Delete
  .SaveAs chemin & "DS.xlsx", 51
  .Close
End With
Kill chemin & "DS.xlsm"
End Sub
A+
 
Bonjour,
ton fichier répond bien à ma demande sauf que quand je l'applique sur mon fichier d'origine il me copie tout les onglets alors que moi je ne veux copier que les onglets (MO Qte, BETON Qte, ACIER Qte)
autre chose le code ne supprime pas tout les codes qui se trouve sur ces trois onglets
 

Pièces jointes

Il n'existe pas de forme dessinée "Button 1" dans le fichier joint.
Le bouton de formulaire qui affiche "EXPORTER" s'appelle "Bouton 2"
Moi je le renommerais "BtnExporter" et j'utiliserais ce nom pour ne pas me tromper.
Notez que vous pouvez aussi prendre WbkDst.Sheets("MO Qte").Shapes(Application.Caller).Delete
 
Re,

Comme quoi il faut être précis dès le début dans ses demandes 🙄
Code:
Sub Exporter()
Dim chemin$, s As Object
chemin = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs chemin & "DS.xlsm"
With Workbooks.Open(chemin & "DS.xlsm")
  For Each s In .Sheets
    If IsError(Application.Match(s.Name, Array("MO Qte", "BETON Qte", "ACIER Qte"), 0)) _
      Then s.Delete Else s.DrawingObjects.Delete
  Next
  .SaveAs chemin & "DS.xlsx", 51
  .Close
End With
Kill chemin & "DS.xlsm"
End Sub
Fichier joint.

Nota : ma macro du post #6 ne laissait pas de code VBA dans le fichier (.xlsx) créé !!

A+
 

Pièces jointes

Re,

J'ai utilisé la méthode précédente pour faire autre chose que mes petits copains 😉

Mais je préfère la méthode de Jacky67 car elle est plus rapide :
Code:
Sub Exporter()
Dim s As Object
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets(Array("MO Qte", "BETON Qte", "ACIER Qte")).Copy
With ActiveWorkbook
  For Each s In .Sheets: s.DrawingObjects.Delete: Next
  .SaveAs ThisWorkbook.Path & "\DS", 51
  .Close
End With
ActiveCell.Activate
End Sub
Fichier (2).

A+
 

Pièces jointes

Bonjour Job,
en appliquant le 2ème code sur mon fichier d'origine il n'exporte pas les mêmes couleurs d'origine est ce que je dois changer quelque chose dans le code ??

VB:
Sub Exporter()
Dim s As Object
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets(Array("MO Qte", "BETON Qte", "ACIER Qte")).Copy
With ActiveWorkbook
  For Each s In .Sheets: [I]Ce lien n'existe plus[/I] Next
  .SaveAs ThisWorkbook.Path & "\DS", 51
  .Close
End With
ActiveCell.Activate
End Sub
 
- 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
2
Affichages
166
  • Question Question
Microsoft 365 Classeur Disparu
Réponses
2
Affichages
493
Retour