XL 2021 enregistrer xltm en xlsm avec chemin automatiquement

  • Initiateur de la discussion Initiateur de la discussion sbrun
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sbrun

XLDnaute Nouveau
Bonjour à tous !
Tout nouveau sur le forum j'ai une question a poser
Je souhaite enregistrer un modèle existant (xltm) en xlsm par macro
Cette macro doit nommer mon classeur avec la valeur récupérée d'une cellule précisée ( toujours la même) - ca c'est ok
Cette macro doit donner l'extension xlsm - c'est ok
Cette macro doit enregistrer mon classeur dans un répertoire précis automatiquement sans ouvrir de fenêtre - Pas ok
Elle m'ouvre la box "enregistrer sous", avec le bon nom de fichier et la bonne extension mais ne propose pas le bon répertoire !!!
Que faire pour - 1 ne pas avoir de box ?
2 enregistrer dans le bon chemin ?
Merci à vous

Mon code :


Sub enregistdernierN°BdC()
' enregistrement classeur entier nommé avec valeur cellule dans chemin précis
Sheets("Se").Range("F3").Value = Sheets("BdC").Range("C6").Value
Dim Path As String
Dim filename As String
Path = "C:\Utilisateurs\sb\Téléchargements\Marcel\"
filename = ActiveSheet.Range("C16")
r = Application.GetSaveAsFilename(filename, Filefilter:=" fichier xlsm,*.xlsm")
ActiveWorkbook.SaveAs r
End Sub
 
Solution
Fais quand même un essai …
Pour moi ce code devrait marcher :
VB:
Sub enregistdernierN°BdC()
' enregistrement classeur entier nommé avec valeur cellule dans chemin précis
   Sheets("Se").Range("F3").Value = Sheets("BdC").Range("C6").Value
   ChDrive "C": ChDir "C:\Utilisateurs\sb\Téléchargements\Marcel"
   On Error Resume Next
   ActiveWorkbook.SaveAs ActiveSheet.Range("C16").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
   If Err Then MsgBox "Erreur " & Err & " en tentant : " _
      & vbLf & "ActiveWorkbook.SaveAs """ & ActiveSheet.Range("C16").Value & """, FileFormat:=xlOpenXMLWorkbookMacroEnabled" _
      & vbLf & "CurDir :" & vbLf & CurDir _
      & vbLf & Err.Description, vbExclamation, "enregistdernierN°Bcd"
   End Sub
Bonjour à tous,
J'avais une autre optique, mais peut-être pas la bonne.

VB:
Sub enregistdernierN°BdC()

    Sheets("Se").Range("F3").Value = Sheets("BdC").Range("C6").Value
    
    Dim chemin As String
    Dim nomFichier As String
    
    chemin = "C:\Utilisateurs\sb\Téléchargements\Marcel\"
    nomFichier = Sheets("Se").Range("C16").Value & ".xlsm"
    
    Application.DisplayAlerts = False
    
    ActiveWorkbook.SaveAs _
        Filename:=chemin & nomFichier, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled
    
    Application.DisplayAlerts = True

End Sub

Bonne continuation

Nicolas
 
Il faut bien entendu remplacer Path par une constant String du bon chemin.
Ou bien l'y affecter. Vous l'aviez fait dans le code cité :
Vérifiez si ce chemin existe bien.
Désolé je n'avais mis qu'une partie de ma macro
la voici en totalité mais erreur 76 : chemin d'Accès introuvable

Sub enregistdernierN°BdC()
'enregistrement classeur entier en rapport avec valeur cellule dans chemin précis
Sheets("Se").Range("F3").Value = Sheets("BdC").Range("C6").Value
Dim Path As String
Dim filename As String
Path = "C:\Utilisateurs\sb\Téléchargements\Marcel\"
filename = ActiveSheet.Range("C16")
ChDrive Left(filename, 1)
ChDir filename
r = Application.GetSaveAsFilename(filename, Filefilter:=" fichier xlsm,*.xlsm")
ActiveWorkbook.SaveAs r

End Sub
 
Il faut bien entendu remplacer Path par une constant String du bon chemin.
Ou bien l'y affecter. Vous l'aviez fait dans le code cité :
Vérifiez si ce chemin existe bien.
Pour le chemin j'ai essayé - Path = "C:\Utilisateurs\sb\Téléchargements\Marcel\"
et aussi celui indiqué dans l'explorateur de fichiers : Path = "C:\Users\sb\Downloads\Marcel\"
Capture d’écran 2026-01-30 125918.jpg
 
re comme ça
VB:
Sub enregistdernierN°BdC()
    'enregistrement classeur entier en rapport avec valeur cellule dans chemin précis
    'Sheets("Se").Range("F3").Value = Sheets("BdC").Range("C6").Value
  
    Dim Path$, filename$, Fullpath$, ReturnDialog
    'instruction des variables
    'Dossier de destination
    Path = "C:\Utilisateurs\sb\Téléchargements\Marcel\"
    If Dir(Path, vbDirectory) = "" Then MsgBox "Le dossier de destination n'existe pas" & vbCrLf & "Veuillez verifier": Exit Sub
  
    'Nom du fichier
    filename = ActiveSheet.Range("C16")
  
    'Chemin complet à integrer dans le filname du dialog
    Fullpath = Path & filename
  
    'positionner le dossier courant
    ChDrive Left(Path, 1)
    ChDir Path
  
    'Ouverture de dialogue Save As
    ReturnDialog = Application.GetSaveAsFilename(Fullpath, Filefilter:=" fichier xlsm,*.xlsm")
    'au cas ou on annule dans le dialog
    If ReturnDialog = False Then MsgBox "Annulation d'enregistrement du fichier", vbInformation: Exit Sub
  
    'Et enfin on enregistre le classeur avec returnDialog
    ActiveWorkbook.SaveAs _
                   Filename:=ReturnDialog, _
                   FileFormat:=xlOpenXMLWorkbookMacroEnabled
  
End Sub

j'ajouterais que je ne sais pas sous quelle version office et windows tu travaille ,mais j'ai un doute sur le path en français
Path ="C:\Utilisateurs\sb\Téléchargements\Marcel\"
chez moi ce serait plutot ça
Path ="C:\users\sb\Downloads\Marcel\"
 
Dernière édition:
Bonjour,

Désolé je n'avais mis qu'une partie de ma macro
la voici en totalité mais erreur 76 : chemin d'Accès introuvable
As-tu testé #4 ?



PS : quand tu postes du code VBA dans tes messages sur le forum, n'hésite pas à l'encadrer de la balise code avec le paramètre vb pour qu'il soit plus lisible.

Exemple :
[ code=vb ]
ici ton code
[ /code ]
(sans les espaces, bien sûr)
 
re comme ça
VB:
Sub enregistdernierN°BdC()
    'enregistrement classeur entier en rapport avec valeur cellule dans chemin précis
    'Sheets("Se").Range("F3").Value = Sheets("BdC").Range("C6").Value
  
    Dim Path$, filename$, Fullpath$, ReturnDialog
    'instruction des variables
    'Dossier de destination
    Path = "C:\Utilisateurs\sb\Téléchargements\Marcel\"
    If Dir(Path, vbDirectory) = "" Then MsgBox "Le dossier de destination n'existe pas" & vbCrLf & "Veuillez verifier": Exit Sub
  
    'Nom du fichier
    filename = ActiveSheet.Range("C16")
  
    'Chemin complet à integrer dans le filname du dialog
    Fullpath = Path & filename
  
    'positionner le dossier courant
    ChDrive Left(Path, 1)
    ChDir Path
  
    'Ouverture de dialogue Save As
    ReturnDialog = Application.GetSaveAsFilename(Fullpath, Filefilter:=" fichier xlsm,*.xlsm")
    'au cas ou on annule dans le dialog
    If ReturnDialog = False Then MsgBox "Annulation d'enregistrement du fichier", vbInformation: Exit Sub
  
    'Et enfin on enregistre le classeur avec returnDialog
    ActiveWorkbook.SaveAs ReturnDialog
  
End Sub

j'ajouterais que je ne sais pas sous quelle version office et windows tu travaille ,mais j'ai un doute sur le path en français
Path ="C:\Utilisateurs\sb\Téléchargements\Marcel\"
chez moi ce serait plutot ça
Path ="C:\users\sb\Downloads\Marcel\"
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
989
Réponses
3
Affichages
827
Retour