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 ?

Twister_Tkd a écrit :

Est-ce normal ?

Oui

A quelle moment dans le code l'enregistrement est réellement effectif ?

Après l'instruction :
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é.

Rechercher des sujets similaires à "enregistrer vba"