Enregistrer Sous VBA
Bonjour à tous,
Je fais appel à vos lumières sur un sujet que je ne maîtrise pas du tout, à savoir le vba.
Je sais qu'il y a plusieurs poste sur le sujet, mais la lecture de tout ce que j'ai pu trouver ne m'a malheureusement pas aider à faire ce que je souhaite.
Alors voilà :
J'aimerais que mon fichier contienne un bouton relié à une macro, laquelle me permettrait :
- d'ouvrir une fenêtre "Enregistrer sous"
- de définir à l'avance un nom pour le fichier sur la base d'une info contenue en cellule B2
- de définir par défaut le format d'enregistrement (.xlsx)
- de laisser le choix à l'utilisateur du dossier de destination de l'enregistrement.
Voici le code que j'ai pu trouvé, mais qui visiblement ne fonctionne pas :
Sub Enregistrer_sous()
Dim Fichier As String
Fichier = "Nouveau client - " & Range("B2")
ThisWorkbook.Sheets("Feuil1").Copy
Application.GetSaveAsFilename Fichier, Filefilter:="Excel Files (*.xls), *.xlsx*"
End Sub
Quand j'applique ce code
- la fenêtre "Enregistrer sous" s'ouvre bien
- le nom du fichier est correctement définit
Mais
- l'extension est ".xls" au lieu de ".xlsx"
- si j'enregistrer malgré tout, le fichier n'est finalement pas enregistré
Je ne sais pas si ma méthode est la bonne, j'ai vu qu'il existait d'autres manières d'enregistrer sous ; le soucis est que, ne comprenant pas la plupart du temps les codes que je trouves, je n'arrive pas à les adapter.
Je vous remercie par avance pour vos retours.
Bonjour
Essaie ça :
Sub Enregistrer_sous()
Dim Fichier As String
Fichier = "Nouveau client - " & Range("B2")
ThisWorkbook.Sheets("Feuil1").Copy
f = Application.GetSaveAsFilename(Fichier, Filefilter:="Excel Files (*.xlsx), *.xlsx*")
ActiveWorkbook.SaveAs Filename:=f
End Sub
Résultat ?
Bye !
Bonjour gmb,
Merci pour ta solution, elle a l'air de fonctionner parfaitement !
- La fenêtre "enregistrer sous" s'ouvre bien
- le nom du fichier est bien pré-définit
- le format est le bon
Par contre, si au lieu de valider mon enregistrement, je fais "annuler" - dans la fenêtre "enregistrer sous" - il me créer un fichier qu'il appelle "FALSE"...
Est-ce normal ? A quelle moment dans le code l'enregistrement est réellement effectif ?
OuiTwister_Tkd a écrit :Est-ce normal ?
Après l'instruction :A quelle moment dans le code l'enregistrement est réellement effectif ?
ActiveWorkbook.SaveAs Filename:=f
Si tu as cliqué sur ‘’Annuler’’, le fichier copié, qui est toujours présent à l’écran doit être refermé et la macro doit alors s’arrêter.
Essaie donc ça :
Sub Enregistrer_sous()
Dim Fichier As String
Fichier = "Nouveau client - " & Range("B2")
ThisWorkbook.Sheets("Feuil1").Copy
f = Application.GetSaveAsFilename(Fichier, Filefilter:="Excel Files (*.xlsx), *.xlsx*")
If f = False Then
ActiveWindow.Close False
Else
ActiveWorkbook.SaveAs Filename:=f
End If
End Sub
Résultat ?
Bye !
Résultat :
Impeccable ! Tout est solutionné.
Merci pour ton efficacité.