Enregistrer sous, laisser choisir chemin

Résolu
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -  
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   4 724
 
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   Statut Membre Dernière intervention   40
 
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   Statut Membre Dernière intervention   40 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   40 > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
Merci! Bouton annuler fonctionne... mais :
Bogue à la ligne 9???
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
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