[macro VBA] enregistrer classeur nom cellule

Résolu
Bonjour,

Je cherche comment coder pour enregister mon classeur avec un nom qui serait la valeur d'une cellule (nombre ou texte) ou même plutôt le nom d'une feuille dans ce classeur.

Je pensais définir une variable mais ceci ne marche pas dans le code:

ActiveWorkbook.SaveAs Filename:= _
"nom.xls"

Si quelqu'un a une idée pour moi..
Merci et bonne soirée!!

10 réponses

Résumé de la discussion

Sauvegarder un classeur Excel avec un nom dérivé d'une valeur de cellule ou d'un nom de feuille, plutôt qu'un nom prédéfini, constitue la problématique centrale abordée par les échanges. Plusieurs réponses suggèrent d’utiliser la valeur d’une cellule comme nom via ActiveWorkbook.SaveAs Filename:=[A1].Value & '.xls', et d’ajouter l’extension lorsque la cellule ne la contient pas. En parallèle, d’autres proposent de construire le chemin d’enregistrement avec ThisWorkbook.Path et Range('B2'), puis ActiveWorkbook.SaveAs Filename:=fichier pour enregistrer dans le dossier source avec le nom composé. Certains précisent qu’un espace superflu ou l’absence d’extension peut provoquer l’échec, et que des variantes existent selon que l’extension soit .xlsx ou .xlsm, ou selon le chemin d’enregistrement.

Bobot (l’IA à votre service)
  1. Contributeur
    Bonjour,

    ActiveWorkbook.SaveAs Filename:=[A1].Value
    marche très bien avec test.xls en A1.
    Si tu as un nombre ou un texte sans .xls dans A1 il faut le rajouter :
    ActiveWorkbook.SaveAs Filename:=[A1].Value & ".xls"
    Tu peux compléter le nom avec le chemin du répertoire...

    eric
    24
    1. salut eric, super ta formule, par contre comme je suis novice en macro, peux tu me dire ce qu'il faut écrire pour attribuer le chemin d accès le mien est "C:\Users\Famille MOULA\Documents\projet\Eve\test.
      je te remerci car actuellement tou mes fichiers enregistré vont directement dans mes documents je suis a peu de chose de réussir !!

      merci beaucoup
      -1
    2. Contributeur
      @dokayunBonjour,

      Soit tu mets le chemin et le nom du fichier dans 2 cellules d'une feuille, soit dans des variables vba, ou tu panaches.
      Ex avec chemin en variable et nom fichier dans Feuil1!A1 :
      sub sauve
      dim chemin as string
      chemin = "C:\Users\Famille MOULA\Documents\projet\Eve\"
      ActiveWorkbook.SaveAs Filename:=chemin & worksheets("Feuil1").[A1].Value
      end sub

      eric
      0
    3. @eriiicBonjour à toi,
      Est-ce possible lorsqu'on donne le chemin d'accès pour l'enregistrement, qu'on puisse déterminer une partie de ce chemin d'accès à partir d'une variable dans une cellule de ton tableur excel ....

      Dim chemin As String
      chemin = "C:\Users\Louis\Desktop\Louis Nadeau\Travail\Entreprises\Matrixcel\Clients\resiver\Diagnostiques\"
      ActiveWorkbook.SaveAs Filename:=chemin & Worksheets("diagnostique").[c2] & [" "] & [c4].Value

      Exemple : Mes clients se retrouvent tous dans le même dossier du nom de "client"

      client a
      client b
      client c

      Dans mon tableur j'ai un endroit ou j'inscrit le nom du client ....j'aimerais pourvoir à partir de cette cellule lui indiquer l'endroit exacte ou aller enregistrer le document...
      ex: C:\Users\Louis\Desktop\Louis \Travail\Entreprises\Matrixcel\Clients\ ???? \ diagnostique \"

      j'ai fait des tentatives en nomant une variable ...mais je suis vraiment pas un programmeur ...alors si tu as 2 secondes pour m'aider se serait très apprécié.
      0
    4. Contributeur
      @Creatif911Bonjour,

      Oui, le chemin peut être le résultat de la concaténation de plusieurs variables ou valeurs de cellules.
      Mais dans saveas tu dois avoir le chemin+le nom du fichier en .xls
      De plus le répertoire doit être existant, sinon il faut le créer avant (et pour le créer il faut que celui qui le contient soit existant).
      ex:
      MkDir "c:\temp\rep"
      ActiveWorkbook.SaveAs Filename:="c:\temp\rep\test.xls"

      eric
      0
    5. Bonjour,

      J'ai besoin de votre aide aussi sur le même sujet (macro enregistrer sous)
      Je souhaite mettre le chemin d'accés et le nom de la facture dans deux cellules.
      Quel serait alors le code de la macro ?

      Merci beaucoup,

      Florie
      0