XL 2021 Duplication d'onglets dans un nouveau fichier et enregistrement selon une cellule donnée

catdog

XLDnaute Junior
Bonjour,

J'ai une petite macro qui me permet de dupliquer 3 des onglets d'un fichier dans un nouveau fichier. Cette macro fonctionne à merveille.

Maintenant, j'aimerais aller un poil plus loin : j'aimerais qu'à cela, la macro attribue un nom au nouveau fichier... Nom défini par une formule dans une cellule de l'onglet actif.

Code:
Sub copy_sheets()
'
' Copie les onglets vers un nouveau classeur
'
    Sheets(Array("Cout Personnel", "Matrice FC", "Contributions en nature")).Select
    Sheets("Cout Personnel").Activate
    Sheets(Array("Cout Personnel", "Matrice FC", "Contributions en nature")).Copy

Le nom (avec chemin, nom et extension en xlsx) sera indiqué dans la cellule AA4

Merci d'avance pour votre aide...
Je suis convaincu que c'est un p'tit truc tout bête...

Olivier.
 
Solution
Bonjour catdog,

Voici une possibilité, je passe par une variable pour le chemin et le nom, mais pas obligé ;)
VB:
Sub CopieEtEnregistre()
  Dim sPathFile As String
  sPathFile = ActiveWorkbook.Sheets("Cout Personnel").Range("AA4").Value
  ' Copie les onglets vers un nouveau classeur
  ActiveWorkbook.Sheets(Array("Cout Personnel", "Matrice FC", "Contributions en nature")).Copy
  If Right(sPathFile, 5) <> ".xlsx" Then sPathFile = sPathFile & ".xlsx"
  ' Sauvegarder le classeur devenu actif
  ActiveWorkbook.SaveAs sPathFile
End Sub
Edit : modification code

A+

catdog

XLDnaute Junior
Re-bonjour,

Pour préciser ma demande, j'aimerais faire comme la macro ci-dessous :
Code:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    [AA2], Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Cette macro me permet de créer un pdf avec le chemin et le nom qui se trouvent dans la cellule AA2.

Mais cette fois, je voudrais créer un nouveau fichier excel avec le chemin et le nom qui se trouvent en AA4.

Merci d'avance,
Olivier.
 

wDog66

XLDnaute Occasionnel
Bonjour catdog,

Voici une possibilité, je passe par une variable pour le chemin et le nom, mais pas obligé ;)
VB:
Sub CopieEtEnregistre()
  Dim sPathFile As String
  sPathFile = ActiveWorkbook.Sheets("Cout Personnel").Range("AA4").Value
  ' Copie les onglets vers un nouveau classeur
  ActiveWorkbook.Sheets(Array("Cout Personnel", "Matrice FC", "Contributions en nature")).Copy
  If Right(sPathFile, 5) <> ".xlsx" Then sPathFile = sPathFile & ".xlsx"
  ' Sauvegarder le classeur devenu actif
  ActiveWorkbook.SaveAs sPathFile
End Sub
Edit : modification code

A+
 
Dernière édition:

catdog

XLDnaute Junior
Rebonjour
Bonjour catdog,

Voici une possibilité, je passe par une variable pour le chemin et le nom, mais pas obligé ;)
VB:
Sub CopieEtEnregistre()
  Dim sPathFile As String
  ' Copie les onglets vers un nouveau classeur
  Sheets(Array("Cout Personnel", "Matrice FC", "Contributions en nature")).Copy
  sPathFile = Sheets("Cout Personnel").Range("AA4")
  If Right(sPathFile, 5) <> ".xlsx" Then sPathFile = sPathFile & ".xlsx"
  ' Sauvegarder le classeur devenu actif
  ActiveWorkbook.Save sPathFile
End Sub

A+
Malheureusement, j'ai le résultat suivant :
1712755470206.png

J'ai juste copier/coller ton code dans le nom de ma macro en sub...
Par contre, c'est une macro que j'ai habituellement dans mon classeur personnel et non dans le classeur d'origine des onglets. Cela pourrait-il avoir un impact ?

Merci d'avance,
Olivier.
 

catdog

XLDnaute Junior
Re,

Je viens de modifier le code précédent, à retester avec les modifications ;)

A+
On progresse...
J'ai maintenant le message suivant :
1712760114682.png

Si je mets "oui", bien évidemment, la macro va jusqu'au bout.
Par contre, je ne vois pas pourquoi il m'embarque une macro dans mon nouveau fichier.
Ne peut-on pas s'affranchir de cette question, et "forcer" l'enregistrement sans macro ?

Je ferai sans si besoin...

Merci encore...
 

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 656
dernier inscrit
VNVT