Sauvegarde XLSM - Plus de macro

Bonjour,

Premièrement je voulais tous vous remercier car grâce à vous j'ai eu beaucoup d'aide pour créer mon fichier VBA!!

Voici mon problème : J'ai un code pour copier ma feuille dans un nouveau classeur et l’enregistrer en VBA avec macro (XLSM).

Dim objWorkbookCible As Workbook
Dim objworkbooksource As Workbook

 Chemin = Application.FileDialog(msoFileDialogFolderPicker).Show

  Set objworkbooksource = ActiveWorkbook
  Worksheets(1).Copy
  Set objWorkbookCible = ActiveWorkbook

ActiveWorkbook.SaveAs Chemin & [A4].Value & "_" & [D4].Value & "_BMO" & ".xlsm", _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

ActiveWorkbook.save

Mes problèmes sont les suivants :

  • Mon fichier ne va pas dans le dernier répertoire sélectionner mais celui en amont
  • Il y a toujours un "-1" devant le nom de fichier
  • Je n'ai plus une seule macro dans ce nouveau fichier

Merci de votre aide, et continuez comme ça!!

J'ai réussi à arriver dans le bon répertoire avec le code suivant :

Dim objWorkbookCible As Workbook
Dim objworkbooksource As Workbook
Dim Chemin As String

 Dim Dossier
  Chemin = Application.FileDialog(msoFileDialogSaveAs).Show
  MsgBox Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)

  Set objworkbooksource = ActiveWorkbook
  Worksheets(1).Copy
  Set objWorkbookCible = ActiveWorkbook

ActiveWorkbook.SaveAs Filename:=Chemin & [A4].Value & "_" & [D4].Value & "_BMO" & ".xlsm", _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

ActiveWorkbook.save
ActiveWorkbook.Close

Mais j'ai toujours mon -1 devant le nom de fichier :

-1[A4].Value_[D4].Value_BMO.xlsm

Et toutes mes macro disparaissent mais pas mes boutons...

Merci de votre aide!

Salut et bienvenue sur le Forum,

Pour le -1, je ne sais pas trop, si tu lances ta macro au pas à pas, tu vois cette valeur dans la liste des variables. Je ne sais pas si tu fais une erreur ou …..

Tu pourrais essayer de remplacer cette ligne

ActiveWorkbook.SaveAs Chemin & [A4].Value & "_" & [D4].Value & "_BMO" & ".xlsm", _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 

par

ActiveWorkbook.SaveAs Chemin & "\" & [A4].Value & "_" & [D4].Value & "_BMO" & ".xlsm", _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

Sinon essaie cet autre code trouvé sur le net et modifié pour ton cas

Sub ChoixRepertoire()
Dim chemin As String
Dim objShell As Object, objFolder As Object, oFolderItem As Object

 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
 On Error GoTo Gesterr

 Set oFolderItem = objFolder.Items.Item
 chemin = oFolderItem.Path
ActiveWorkbook.SaveAs chemin & "\" & [A4].Value & "_" & [D4].Value & "_BMO" & ".xlsm"

Gesterr::
End Sub

Cordialement.

Merci Yvouille!

Ta deuxième méthode est juste parfaite!

Mais pense-tu que l'on peut garder que la première feuille (nommée "BMO") lors de la sauvegarde?

Car les autres feuilles contiennent des données confidentielles que je ne peux diffuser...


J'ai réussi avec :

Sheets("Biblio").Select
Application.DisplayAlerts = False

ActiveWorkbook.save
ActiveWorkbook.Close

Merci à toi!

Re,

J’étais en train de chercher une solution à ton problème.

Je suis un peu surpris par ta solution. Tu sélectionnes la feuille ‘Biblio’ alors que tu veux sauvegarder la feuille ‘BMO’ et tu enregistre quand même le classeur complet (ActiveWorkbook.save).

Mais bon, si ça te convient comme ça, tant mieux

Amicalement.

Oui car j'ai deux feuilles dans un fichier de base(BMO et Biblio). Je sauvegarde à partir de ce fichier mais je veux garder que la feuille BMO! Voici le code en entier pour ceux que ça aiderai!

Public Sub sauvegarde_BMO()

Dim chemin As String
Dim objShell As Object, objFolder As Object, oFolderItem As Object

 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
 On Error GoTo Gesterr

 Set oFolderItem = objFolder.Items.Item
 chemin = oFolderItem.Path
ActiveWorkbook.SaveAs chemin & "\" & [A4].Value & "_" & [D4].Value & "_BMO" & ".xlsm"

Gesterr::

' Supprimer feuille "Biblio"
Sheets("Biblio").Delete
Application.DisplayAlerts = False

ActiveWorkbook.save
ActiveWorkbook.Close
End Sub

Re,

Tu as modifié ton code entre deux. D’abord tu avais Sheets("Biblio").Select, maintenant tu as Sheets("Biblio").Delete.

Ensuite, si tu places ton instruction Application.DisplayAlerts = False après la ligne Sheets("Biblio").Delete, je ne comprends pas à quoi elle sert. Tu auras toujours une fenêtre qui va s’ouvrir pour te demander si tu veux vraiment effacer cette feuille après que tu aies refermé et rouvert ton application Excel (donc après que les Application.DisplayAlerts aient à nouveau automatiquement la valeur TRUE). Puis – tant que l’application Excel reste ouverte - c’est assez dangereux de ne pas réactiver ces alertes, car tu peux avoir d’autres occasions, éventuellement sur d'autres fichiers, où elles pourraient être nécessaires.

Selon moi, cette partie de ton code devrait donc plutôt être :

' Supprimer feuille "Biblio"
Application.DisplayAlerts = False
Sheets("Biblio").Delete
Application.DisplayAlerts = True

Amicalement.

Rechercher des sujets similaires à "sauvegarde xlsm macro"