Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
C'est à mettre devant l'utilisation de la méthode GetSaveAsFilename
Celle ci démarre en effet sur le CurDir positionné par ces deux instructions.
Comme ceci ?
filename = ActiveSheet.Range("C16")
ChDrive Left(Path, 1)
ChDir Path
r = Application.GetSaveAsFilename(filename, Filefilter:=" fichier xlsm,*.xlsm")
ActiveWorkbook.SaveAs r

Erreur 76 chemin introuvable.
 
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\"
 
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)
 
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…