Menu

Ajouter chemin à macro enregistrement feuille classeur

- - Dernière réponse :  Guillotix - 13 mars 2019 à 18:11
Bonjour,

J'ai créé la macro suivante mais maintenant je souhaiterais y ajouter un chemin pour l'enregistrement
Seulement je n'y parviens pas. Pouvez-vous m'aider svp ?

Sub copier_feuille_recap ()
Dim feuille, nom, Export
Set feuille = ActiveWorkbook.Sheets("RECAP")
nom = feuille.Range("D1") & ".xlsx"

Application.Workbooks.Add
Export = ActiveWorkbook.Name
feuille.Cells.Copy

With Workbooks(Export).Sheets(1).Cells
.PasteSpecial Paste:=xlPasteAll
.PasteSpecial Paste:=xlPasteValues
End With
Workbooks(Export).SaveAs nom

Application.CutCopyMode = False

End Sub
Afficher la suite 

Votre réponse

9 réponses

Messages postés
5252
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
15 mars 2019
787
0
Merci
Bonjour

Copie du chemin réalisé avec l'enregistreur de macro
Regarder si cela vous convient

ChDir "lettre du disque F:\dossier\sous_dossier\sous_sous_dossier"
ActiveWorkbook.SaveAs Filename:= _
" F:\dossier\sous_dossier\sous_sous_dossier\nom_du_fichier.xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Commenter la réponse de PHILOU10120
0
Merci
Bonjour PHILOU10120

Merci pour cette réponse rapide
En fait je souhaiterais garder ma macro actuelle en y spécifiant juste le chemin. Seulement je ne sais où le placer, j'ai systématiquement des erreurs

Serait-il possible de réécrire ma macro en y ajoutant le chemin à l'endroit adéquat ?
Commenter la réponse de Guillotix
Messages postés
5252
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
15 mars 2019
787
0
Merci
Bonjour


Essayer ceci

Sub copier_feuille_recap()
Dim feuille, nom, Export
Set feuille = ActiveWorkbook.Sheets("RECAP")
nom = feuille.Range("D1") & ".xlsx"

Application.Workbooks.Add
Export = ActiveWorkbook.Name
feuille.Cells.Copy

With Workbooks(Export).Sheets(1).Cells
.PasteSpecial Paste:=xlPasteAll
.PasteSpecial Paste:=xlPasteValues
End With
ChDir "F:\dossier\sous_dossier"

Workbooks(Export).SaveAs nom

Application.CutCopyMode = False


End Sub

PHILOU10120
Messages postés
5252
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
15 mars 2019
787 -
Vous avez bien mis votre disque à la place de F et votre dossier à la place de dossier, ect...
Commenter la réponse de PHILOU10120
0
Merci
Bonjour

Non toujours pas. L'enregistrement sebfait toujours dans Mes documents ... :(
Commenter la réponse de Guillotix
0
Merci
Non, j'ai modifié le chemin, je cherche à enregistrer sur un réseau d'entreprise
Je vais appeler l'IT, il me semble que dans certains cas l'adresse réseau n'est pas complète
Commenter la réponse de Guillotix
Messages postés
5879
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 mars 2019
409
0
Merci
Bonjour,

en se servant d'une boite de dialogue enregistrement, comme ceci:

Dim feuille, nom, Export, fileSaveName 
'mettre le début du code
 fileSaveName = Application.GetSaveAsFilename("chemin du repertoire\" & nom, "ExcelFiles (*.xlsx), *.xlsx") 'boite dialogue enregistrement
Workbooks(Export).SaveAs fileSaveName 

Commenter la réponse de cs_Le Pivert
0
Merci
Bonjour Le_Pivert

C'est parfait ainsi !!
Un grand merci

Bonne fin de journée
Commenter la réponse de Guillotix
0
Merci
Re,

Pardon mais je me rends compte à l'utilisation de 2 petites choses que je souhaiterais améliorer :

1. Lorsque j'annule l'enregistrement le fichier s'enregistre quand-même avec le nom FALSE

2. S'il était possible que le tableau nouvellement créé se ferme automatiquement après l'enregistrement

Sinon pour le reste c'est nickel
cs_Le Pivert
Messages postés
5879
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 mars 2019
409 -
C'est un peu plus compliqué il faudra adapter le chemin du répertoire partout

Sub copier_feuille_recap()
Dim feuille, nom, Export, fileSaveName

Set feuille = ActiveWorkbook.Sheets("RECAP")
nom = feuille.Range("D1") & ".xlsx"

Application.Workbooks.Add
Export = ActiveWorkbook.Name
feuille.Cells.Copy

With Workbooks(Export).Sheets(1).Cells
.PasteSpecial Paste:=xlPasteAll
.PasteSpecial Paste:=xlPasteValues
End With
 fileSaveName = Application.GetSaveAsFilename("chemin repertoire\" & nom, "ExcelFiles (*.xlsx), *.xlsx") 'boite dialogue enregistrement
Workbooks(Export).SaveAs fileSaveName
Application.CutCopyMode = False
TesteSiFichierExiste 'si fichier existe on supprime
Application.Quit 'fermeture Excel
End Sub
Sub TesteSiFichierExiste()
'par Excel-Malin.com ( https://excel-malin.com )

Dim MonFichier As String

MonFichier = "chemin repertoire\" & "FALSE.xlsx"

    If FichierExiste(MonFichier) = True Then
    Workbooks("FALSE").Close 'ferme
       Kill ("chemin repertoire\" & "FALSE.xlsx") 'supprime
    Else
       ' MsgBox "Le fichier n'existe pas..."
    End If

End Sub
Public Function FichierExiste(MonFichier As String)
'par Excel-Malin.com ( https://excel-malin.com )

   If Len(Dir(MonFichier)) > 0 Then
      FichierExiste = True
   Else
      FichierExiste = False
   End If
End Function


Voilà

@+ Le Pivert
Commenter la réponse de Guillotix
0
Merci
Merci Le Pivert

Je teste ça demain au boulot et fais un retour aussitôt.
J'aurais une autre question même classeur mais autre macro, je pense que c'est mieux d'ouvrir un nouveau post ?
Commenter la réponse de Guillotix