Copier feuilles d'un classeur vers plusieurs autres classeurs
Olanid
Messages postés
3
Statut
Membre
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,
Tout juste débutant en VBA (quelques vidéos à peine), ce que je demande est bien au dessus de mes capacités c'est pourquoi j'en appelle à vous.
Ce que je veux faire :
J'ai un classeur source (dans un dossier sur mon bureau) avec plusieurs feuilles. J'aimerais que pour chaque feuille (ou si c'est trop complexe, pour la feuille active), ma macro crée un classeur (dans le même dossier) du nom de la feuille + "A FAIRE".
Par exemple si la feuille s'appelle "Ventes du jour", le nouveau classeur soit nommé "Ventes du jour A FAIRE" et qu'il contienne une unique feuille "Ventes du jour".
Il y aura donc dans mon dossier autant de nouveaux classeurs que de feuilles dans mon classeur source.
Je vous remercie par avance
Tout juste débutant en VBA (quelques vidéos à peine), ce que je demande est bien au dessus de mes capacités c'est pourquoi j'en appelle à vous.
Ce que je veux faire :
J'ai un classeur source (dans un dossier sur mon bureau) avec plusieurs feuilles. J'aimerais que pour chaque feuille (ou si c'est trop complexe, pour la feuille active), ma macro crée un classeur (dans le même dossier) du nom de la feuille + "A FAIRE".
Par exemple si la feuille s'appelle "Ventes du jour", le nouveau classeur soit nommé "Ventes du jour A FAIRE" et qu'il contienne une unique feuille "Ventes du jour".
Il y aura donc dans mon dossier autant de nouveaux classeurs que de feuilles dans mon classeur source.
Je vous remercie par avance
Configuration: Windows / Chrome 91.0.4472.77
A voir également:
- Copier feuilles d'un classeur vers plusieurs autres classeurs
- Comment faire un livret avec des feuilles a4 - Guide
- Imprimer un classeur excel sur mac - Guide
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Regrouper plusieurs feuilles excel en une seule - Guide
2 réponses
Bonjour,
voir ceci:
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.copy
ce qui donne:
voilà
voir ceci:
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.copy
ce qui donne:
Option Explicit
'https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.copy
Sub test()
Worksheets("Feuil1").Copy 'adapter nom de la feuille
With ActiveWorkbook
.SaveAs Filename:=ThisWorkbook.Path & "\Feuil1.xlsx", FileFormat:=xlOpenXMLWorkbook 'adapter le chemin
.Close SaveChanges:=False
End With
End Sub
voilà
Tout est ok, sauf que les fichiers sont enregistrés dans le dossier du classeur personnel (apddata) et non dans le dossier de fichier à split.
Cdlt
Cdlt
Remplacer ThisWorkbook.Path par le chemin en dur du dossier de fichier à split.
comme ceci:
@+
comme ceci:
With ActiveWorkbook
.SaveAs Filename:="chemin du dossier de fichier à split\" & Ws.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook 'enregistrer dans la même dossier que le classeur
.Close SaveChanges:=False
End With
@+
J'ai essayé de comprendre et adapter ça à mon cas particulier et je n'arrive à rien. Je pense ne pas avoir les connaissances du tout
Allez dans l'éditeur en faisant Alt F11.
Ensuite insérer un module
Mettre ce code dans ce module
Option Explicit 'https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LI 'Déclare la variable objet Worksheet Dim Ws As Worksheet Sub boucle() 'pour lancer la macro mettre le curseur sur boucle et faire F5 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris 'en compte. 'ThisWorkbook correspond à l'objet classeur contenant la macro For Each Ws In ThisWorkbook.Worksheets 'Renvoie le nom de chaque feuille Ws.Select copy Next Ws End Sub 'https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.copy Sub copy() Worksheets(Ws.Name).copy With ActiveWorkbook .SaveAs Filename:=ThisWorkbook.Path & "\" & Ws.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook 'enregistrer dans la même dossier que le classeur .Close SaveChanges:=False End With End Subenregistrer le classeur sous: classeur acceptant les macros avant de lancer la macro
voilà c'est tout simple!
@+ Le Pivert
Juste une petite question, je dois réimporter votre code pour chaque classeur que je veux split ? Ou il y a possibilité d'avoir une macro qui s'éxécute pour chaque fichier sur lequel je travaille
http://www.modulad.fr/excel-ense/macros-et-feuilles/32-macros-martin/32-macros-martin.pdf
@+ Le Pivert
https://fr.extendoffice.com/documents/excel/5102-excel-assign-hotkey-to-macro.html
ensuite modifier le code:
Option Explicit 'https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LI 'Déclare la variable objet Worksheet Dim Ws As Worksheet Sub boucle() 'pour lancer la macro raccourci clavier 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris 'en compte. 'ActiveWorkbook correspond à l'objet classeur dans lequel on veut copier les feuilles For Each Ws In ActiveWorkbook.Worksheets 'Renvoie le nom de chaque feuille Ws.Select copy Next Ws End Sub 'https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.copy Sub copy() Worksheets(Ws.Name).copy With ActiveWorkbook .SaveAs Filename:=ThisWorkbook.Path & "\" & Ws.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook 'enregistrer dans la même dossier que le classeur .Close SaveChanges:=False End With End Subquand tout cela est fait ouvrir la classeur contenant la macro.
ensuite ouvrir le classeur à copier les feuilles pour qu'il soit actif(visible à l'écran) et lancer la macro avec la raccourci clavier
j'ai essayer cela fonctionne très bien
Bonne programmation
@+ Le Pivert