Enregistrer sous, laisser choisir chemin
Résolu
ButteDuLac
Messages postés
534
Statut
Membre
-
ButteDuLac Messages postés 534 Statut Membre -
ButteDuLac Messages postés 534 Statut Membre -
Bonjour,
Disons que je veux, au clic d'un bouton, qu'Excel enregistre le classeur sous un nom précis :
Ç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!
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
-
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-
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? -
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... -
Bonjour a vous deux,
Code gbinforme modifie pour annuler ou croix fermetureSub 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 -
-
Re,
Chez moi, pas d'erreur!
Ajoutez la ligne Chemin avant ka ligne Active.... et mettez un point d'arret sur cette lugneChemin = 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 cheminDebug.Print Chemin
et relancez. ensuite affichez fenetre d'execution, vous verrez le contenu de Chemin et a vous de decider pour le suite
-