Enregistrer sous, laisser choisir chemin

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - Modifié par ButteDuLac le 22/01/2017 à 01:41
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 24 janv. 2017 à 18:52
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!


A voir également:

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
22 janv. 2017 à 09:10
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
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
24 janv. 2017 à 14:58
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
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
Modifié par ButteDuLac le 24/01/2017 à 15:16
Oups!!! 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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
24 janv. 2017 à 15:16
Bonjour 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
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
24 janv. 2017 à 15:51
Merci! Bouton annuler fonctionne... mais :
Bogue à la ligne 9???
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
Modifié par f894009 le 24/01/2017 à 18:16
Re,
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