Copier onglet Excel sur un nouveau classeur via bouton

Bonjour,

J'ai un classeur avec 5 onglets.

Je souhaite affecter une macro à un bouton afin que 3 onglets soit copiés dans un nouveau classeur

J'ai effectuer des recherches sur internet et j'ai trouvé le code suivant ;

Sub copieonglet()

Dim a, e

Application.ScreenUpdating = False

Application.DisplayAlerts = False

a = Array("FinanceForm", "NotilusAccess", "ITForm")

With Workbooks.Add(xlWBATWorksheet) 'nouveau document, 1 feuille

For Each e In a

ThisWorkbook.Sheets(e).Copy After:=.Sheets(.Sheets.Count)

Next

.Sheets(1).Delete

.Sheets(1).Select

.SaveAs ThisWorkbook.Path & "desktop" & "Form"

.Close

End With

End Sub

Alors ça marche une fois sur deux et je n'arrives pas à retrouvé le fichier qui se créer, enfin je ne sais pas où il va s’enregistrer..

Si quelqu'un peut me conseiller ca serait super..

Merci beaucoup !

Bonne journée !

Bonjour,

Le fichier s'enregistre à priori dans le même répertoire que celui contenant la macro :

.SaveAs ThisWorkbook.Path & "desktop" & "Form"

A mon avis, il manque un élément ("\") dans cette ligne de code :

.SaveAs ThisWorkbook.Path & "\desktopForm.xslx"

PS : cette ligne de code est inutile :

.Sheets(1).Select

Hello Pedro,

Merci pour ton aide

J'ai remplacer le code :

Sub copieonglet()

Dim a, e

Application.ScreenUpdating = False

Application.DisplayAlerts = False

a = Array("FinanceForm", "NotilusAccess", "ITForm")

With Workbooks.Add(xlWBATWorksheet) 'nouveau document, 1 feuille

For Each e In a

ThisWorkbook.Sheets(e).Copy After:=.Sheets(.Sheets.Count)

Next

.Sheets(1).Delete

.SaveAs ThisWorkbook.Path & "\desktopForm.xslx"

.Close

End With

End Sub

Comment je peux faire pour l'enregistrer sur mon bureau ?

Merci beaucoup de ton aide !

Je t'invite à tester quelque chose de très simple, qui devrait te permettre de répondre par toi même à ta dernière question !

Sub Test()
    MsgBox ThisWorkbook.Path & "\desktopForm.xslx"
End Sub

Autre élément qui peut t'aider :

https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.saveas

Hello Pedro,

Le "ThisWorkbook.Path" me permet de sauvegarder le fichier dans le meme dossier où est mon fichier actuel que je veux copier

Je ne sais pas comment je dois remplacer le code suivant :

.SaveAs ThisWorkbook.Path & "\desktopForm.xslx"

Je pensais à SaveAs ThisWorkbook = "C:\user\desktop\OnboardingFile.xslx"

Mais ca ne focntionne pas..

Je me perd dans les codes

Bonjour,

Que donne l’exécution du code transmis dans ma précédente réponse ?

Pour info, SaveAs est suivi du chemin complet de l'enregistrement et du nom du classeur. ThisWorkbook désigne le classeur contenant le code de la macro, ce qui n'a donc aucun intérêt dans l'histoire...

Un exemple concret de syntaxe :

https://www.excel-downloads.com/threads/saveas-vba-chemin-dacces.69492/

Hello Pedro,

J'ai réussi à créer un nouveau fichier avec le code suivant :

Sub copieonglet()

Dim a, e

Application.ScreenUpdating = False

Application.DisplayAlerts = False

a = Array("ITFORM", "FinanceForm", "NotilusAccess")

With Workbooks.Add(xlWBATWorksheet) 'nouveau document, 1 feuille

For Each e In a

ThisWorkbook.Sheets(e).Copy After:=.Sheets(.Sheets.Count)

Next

End With

End Sub

J'ai un nouveau fichier excel qui s'ouvre avec mes 3 onglets, et je peux le sauvegarder dans le dossier que je souhaite.

Le seul inconvénient, c'est que j'ai un onglet avant les 3 que j'ai copier

Je suppose que je dois modifier la ligne en bleu mais je ne sais pas trop quoi enlever..

Hello Pedro,

J'ai réussi à créer un nouveau fichier avec le code suivant :

Sub copieonglet()

Dim a, e

Application.ScreenUpdating = False

Application.DisplayAlerts = False

a = Array("ITFORM", "FinanceForm", "NotilusAccess")

With Workbooks.Add(xlWBATWorksheet) 'nouveau document, 1 feuille

For Each e In a

ThisWorkbook.Sheets(e).Copy After:=.Sheets(.Sheets.Count)

Next

End With

End Sub

J'ai un nouveau fichier excel qui s'ouvre avec mes 3 onglets, et je peux le sauvegarder dans le dossier que je souhaite.

Le seul inconvénient, c'est que j'ai un onglet avant les 3 que j'ai copier

Je suppose que je dois modifier la ligne en bleu mais je ne sais pas trop quoi enlever..

Rechercher des sujets similaires à "copier onglet nouveau classeur via bouton"