enregistrer une feuille active en .xls

GysEcxelVBA

XLDnaute Nouveau
Bonjour, Salut a tout le monde,

après multiple recherche sur le site et autres, j'ai pas trouver le bon code pour pouvoir enregistrer une feuille active du classeur en .xls de manière automatique.

Voilà : j'utilise de code
Code:
Private Sub MenDmr_Click()
Application.DisplayAlerts = False

    ActiveSheet.Select
    ActiveSheet.Copy
With ActiveSheet
    Sheets("Liste").MenDmr.Visible = False
    
End With
Application.Dialogs(xlDialogSaveAs).Show ("Liste")
Application.DisplayAlerts = True
ActiveWorkbook.Close

End Sub

Avec ce code, il m'affiche bien la boite de dialogue enregistrer sous mais je dois a chaque fois choisir .xls.

Merci de votre aide
 

Iznogood1

XLDnaute Impliqué
Re : enregistrer une feuille active en .xls

Bonjour,

utilise GetSaveAsFilename

Code:
Private Sub MenDmr_Click()
  Dim saveName As Variant
  
  Application.DisplayAlerts = False
  With ActiveSheet
    .Select
    .Copy
    Sheets("Liste").MenDmr.Visible = False
  End With
  
  saveName = Application.GetSaveAsFilename(FileFilter:="Excel Files (*.xls), *.xls")
  If saveName <> False Then
    ActiveWorkbook.SaveAs Filename:=saveName , FileFormat:=xlExcel8
    ActiveWorkbook.Close
  End If
  
End Sub
 

job75

XLDnaute Barbatruc
Re : enregistrer une feuille active en .xls

Bonjour GysEcxelVBA,

Vous pouvez préciser le format de fichier à afficher dans la boîte de dialogue :

Code:
Application.Dialogs(xlDialogSaveAs).Show "Liste", _
  IIf(Val(Application.Version) < 12, xlNormal, 56)
Edit : salut Iznogood1

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : enregistrer une feuille active en .xls

Re,

Je viens de tester sur mon vieil ordi avec Excel 2003 : l'argument pour le format crée un bug.

Donc uniquement pour Excel 2007 et versions suivantes :

Code:
Application.Dialogs(xlDialogSaveAs).Show "Liste", 56
A+
 

job75

XLDnaute Barbatruc
Re : enregistrer une feuille active en .xls

Re,

Ah mais si ça marche sur Excel 2003 avec 1 au lieu de xlNormal, donc sur toutes versions :

Code:
Application.Dialogs(xlDialogSaveAs).Show "Liste", IIf(Val(Application.Version) < 12, 1, 56)
A+
 

GysEcxelVBA

XLDnaute Nouveau
Re : enregistrer une feuille active en .xls

Bonjour à vous 2 :cool:

merci d'avoir de votre temps pour me répondre.
Iznogood1 : ton code fonctionne bien, c'est ce que je recherche, sauf que le nom du fichier affiche classeur par défaut et je voudrais qu'il m'affiche Liste ou autre nom.

job75 : j'ai testé ton bout de code de fin avec If et il faut enregistrer 2 fois, c'est un double If ?
 

Discussions similaires

Réponses
2
Affichages
141

Statistiques des forums

Discussions
312 488
Messages
2 088 860
Membres
103 978
dernier inscrit
bderradji