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...
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
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
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
Malheureusement, j'ai le résultat suivant :
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 ?
On progresse...
J'ai maintenant le message suivant :
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 ?