[VBA] Enregistrer sans fermer le fichier d'origine

Bonjour tout le monde,

Je cherche en vain une solution me permettant d'enregistrer le fichier ci-joint.

J'ai déjà confectionné un code (avec l'aide de certaines personnes) pour sauvegarder le fichier comme je le souhaite. Néanmoins dès que je clic sur le bouton sauvegarder le fichier d'origine se ferme...

J'ai réussi a contourner le problème via le code suivant :

Workbooks.Open Filename:= _
        "C:\Users\greg.leo\Desktop\Hotels\\Hotels.xls"
    Windows("Hotels.xls").Activate

Mais celui ci ne me satisfait pas entièrement...

Mon objectif serait : Lorsque je clique sur le bouton sauvegarder. Le fichier d'origine reste ouvert tandis que la sauvegarde se ferme automatiquement...

Pourriez-vous m'aider s'il vous plait ? :/

94hotels.zip (9.69 Ko)

Bonjour

A la place de SaveAs pour quoi ne pas utiliser SaveCopyAs

Option Explicit
Public Sub Enregistrer()
Dim Chemin As String, NomHotel As String, Fichier As String
Dim wS As Worksheet
Dim i As Byte

  With Application
    .DisplayAlerts = False
    .ScreenUpdating = False
  End With

  Set wS = Worksheets(1)
  With wS
    .[D4] = Now
    Chemin = "C:\Users\greg.leo\Desktop\Hotels\"
     NomHotel = .[A9] & " " & .[A12] & " " & .[A10]
    Fichier = NomHotel & " " & Format(Date, "dd.mm.yyyy") & " " & .[D5] & ".xlsm"
    Set wS = Nothing
  End With

  For i = 4 To Worksheets.Count
    Worksheets(i).Visible = xlSheetVeryHidden
  Next

  If Dir(Chemin & NomHotel, 16) = "" Then MkDir Chemin & NomHotel

  With ActiveWorkbook
    .SaveCopyAs Chemin & NomHotel & "\" & Fichier
  End With
End Sub

Bonjour Banzai

Merci pour votre proposition. Je ne connaissais pas la fonction SaveCopyAs ! Je dois avouer qu'elle est très utile !

Néanmoins un problème persiste. J'ai un message d'erreur qui s'affiche. Celui ci est le suivant :

Erreur de compilation : Nombre d'arguments incorrect ou affectation de propriété incorrecte.

Il encadre en jaune : Public Sub Enregistrer

Il encadre en bleu : SaveCopyAs

Pouvez vous m'éclaircir ? :/

EDIT : est ce que l'erreur peut venir du fait que le format de mon fichier soit Xlsm et non Xls ? (J'ai mis au format 97/2003 pour qu'un maximum de personnes puissent ouvrir le fichier).

Mon code est le suivant :

With ActiveWorkbook
        .SaveCopyAs Chemin & NomHotel & "\" & Fichier, _
            FileFormat:=xlOpenXMLWorkbookMacroEnabled

.Close

EDIT2 : Le code semble fonctionner lorsque j'enlève " FileFormat:=xlOpenXMLWorkbookMacroEnabled"

Merci pour votre aide !

Bonjour

Je viens de refaire un test, macro identique (à part le chemin) et pas de soucis

Au premier test création du répertoire + création du fichier

Autres tests création du fichier (heure différente)

C'est quoi ta version d'Excel ?

Ton profil indiques 2009

Greg.leo a écrit :

EDIT2 : Le code semble fonctionner lorsque j'enlève " FileFormat:=xlOpenXMLWorkbookMacroEnabled"

Si je ne l'ai pas marqué dans le code que je t'ai fourni c'est pour cette raison

Bonjour,

Mon profil n'est plus à jour ... Je vais le faire de suite car j'ai la version 2013.

Comme l'indique mon EDIT2 dans le précédent poste, le code fonctionne lorsque j'enlève la partie qui permettait auparavant de l'enregistrer au format Xlsm. Partie dont je n'ai plus besoin actuellement puisqu'on sauvegarde un copie.

Merci pour votre aide

Rechercher des sujets similaires à "vba enregistrer fermer fichier origine"