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
je repete:
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
 
Ca marche super !!!!
mais est-il possible de supprimer l'affichage de la boite de dialogue qui propose le bon nom, la bonne extension et le bon chemin ?
Donc validation directe ?
Merci de ton aide précieuse....
 
Si un ChDrive et un ChDir ont été exécuté, il suffit de spécifier le nom du fichier souhaité comme FileName au SaveAs (ActiveSheet.Range("C16").Value dans votre cas): il sera enregistré sur CurDir.
En résumé :
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"
   ActiveWorkbook.SaveAs ActiveSheet.Range("C16").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
   End Sub
 
Dernière édition:
re
@Dranreb :Non le nom de suffit pas il faut le chemin complet pour le filname
apres peut être selon la version certaines choses changent dans le dialogue mais j'en doute

@sbrun
mais est-il possible de supprimer l'affichage de la boite de dialogue qui propose le bon nom, la bonne extension et le bon chemin ?
Donc validation directe ?
je sais pas je dis LOL maintenant ou tout de suite ?
2 pages pour que tu comprenne comment fonctionne le dialogue Save As (et encore je suis pas sur que tu ai tout compris)
et maintenant tu n'en veux plus !!!

tu sais ou tu a mal toi?
tu supprime toute la partie dialog
et dans le save AS tu remplace ReturnDialog par fullpath
et tu aura l'enregistrement directe sans dialog
 
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
 
Dernière édition:
ben c'est fait c'est d'ailleurs un des sujet récents que dudu2 avait lancé le nom tout court ne veux rien dire pour le dialog
après peut être que chez vous ça change je sais pas mais dans tout les cas le chemin complet fonctionne de 2007 à 2024 donc.......
 
@Dranreb Merci c'est tout bon.
@patricktoulon Merci également mais si tu re lis mon 1er message j'avais ecrit
"Cette macro doit enregistrer mon classeur dans un répertoire précis automatiquement sans ouvrir de fenêtre - Pas ok"
Je n'en veux donc pas plus maintenant.....
Pour la compréhension je suis d'accord avec toi mais je vais décortiquer tout ca car j'aime comprendre ce que je fais
Néophyte en vba , je n'ai posté ma question qu' après 2 jours d'essai......

Merci encore à tous.
 
- 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…