Enregistrer sous, laisser choisir chemin

Résolu
Bonjour,

Disons que je veux, au clic d'un bouton, qu'Excel enregistre le classeur sous un nom précis :

ActiveWorkbook.SaveAs Range.("A1").Value & ".xlsm", fileformat:=52


Ça, ça fonctionne très bien!

Mais disons que je souhaite que l'utilisateur puisse choisir son chemin d'accès, mais que le nom de fichier et surtout le format de fichier soient forcés...

Autrement dit, est-ce possible que la fenêtre de dialogue "Enregistrer sous..." s'ouvre et suggère le nom de fichier en fonction de mon code (soit d'une valeur de cellule), au lieu de "Classeur1", et que le format de fichier soit "Classeur Excel prenant en charge les macros", au lieu d'un classeur Excel normal?

Sinon, y a-t-il une autre façon de procéder???

Merci à l'avance!

1 réponse

  1. Contributeur
    Bonjour,

    Comme ceci cela devrait fonctionner :
    Dim rep As String
    While rep = ""
        With Application.FileDialog(msoFileDialogFolderPicker)
            .Title = "Choisissez votre répertoire de sauvegarde"
            .Show
            If .SelectedItems.Count > 0 Then rep = .SelectedItems(1) & "\"
        End With
    Wend
        ActiveWorkbook.SaveAs rep & Range("A1").Value & ".xlsm", FileFormat:=52
    
    0
    1. Bonjour et merci gbinforme!

      J'ai essayé. C'est presque parfait... j'ai juste un bogue à l'enregistrement. Ça bogue sur la ligne 9, que j'ai modifiée ainsi :

      ActiveWorkbook.SaveAs rep & Sheets("Formulaire1").Range("G4").Value & "_" & Sheets("Formulaire1").Range("G13").Value & ".xlsm", FileFormat:=52


      Ai-je fait une erreur? (Noter que ça boguait aussi avec la ligne 9 initiale...)

      J'ai mis la macro dans un module, sous un bouton cliquable, est-ce le bon endroit?
      0
    2. @ButteDuLacOups!!! J'ai compris... les cellules doivent obligatoirement contenir des informations (effectivement, ces cellules sont obligatoires dans le formulaire ,mais j'avais fait le test sans les remplir!!!)

      Alors un grandiose merci à vous, gbinforme!!!

      Oh! Mais juste une dernière chose... j'aurais besoin d'une ligne qui permet d'annuler la commande (genre « on cancel exit sub »), car si j'appuie sur le bouton « Annuler », il ne se passe rien, alors je suis obligée d'enregistrer même si je ne le souhaite pas...

      Solution??? (Merci!)

      ----
      Mise à jour : non, maintenant, ça fonctionne avec les cellules vides... je vais devoir rectifier avec un IF...
      0
    3. @ButteDuLacBonjour a vous deux,

      Code gbinforme modifie pour annuler ou croix fermeture

      Sub Choix_Rep()
          'choix du repertoire
          Dim Repertoire As FileDialog, Rep As String
          
          With Application.FileDialog(msoFileDialogFolderPicker)
              .Title = "Choisissez votre répertoire de sauvegarde"
              .Show
              If .SelectedItems.Count > 0 Then
                  Rep = Repertoire.SelectedItems(1) & "\"
                  ActiveWorkbook.SaveAs Rep & Sheets("Formulaire1").Range("G4").Value & "_" & _
                              Sheets("Formulaire1").Range("G13").Value & ".xlsm", FileFormat:=52
              End If
          End With
      End Sub
      0
    4. @f894009Merci! Bouton annuler fonctionne... mais :
      Bogue à la ligne 9???
      0
    5. @ButteDuLacRe,
      Chez moi, pas d'erreur!
      Ajoutez la ligne Chemin avant ka ligne Active.... et mettez un point d'arret sur cette lugne
      Chemin = Rep & Sheets("Formulaire1").Range("G4").Value & "_" & _
                              Sheets("Formulaire1").Range("G13").Value & ".xlsm"
      ActiveWorkbook.SaveAs Rep & Sheets("Formulaire1").Range("G4").Value & "_" & _
                              Sheets("Formulaire1").Range("G13").Value & ".xlsm", FileFormat:=52

      Lancez et a l'arret passez le curseur souris sur Chemin pour voir son contenu, si trop long pour voir, ajoutez une ligne en dessous de chemin
      Debug.Print Chemin
      et relancez. ensuite affichez fenetre d'execution, vous verrez le contenu de Chemin et a vous de decider pour le suite
      0