Enregistrement fichier Excel

Bonjour...

Encore une fois je fais appel à de l'aide.

Je souhaite enregistrer un fichier dans un sous dossier de sauvegarde avec un nom fixe mais je ne sais pas comment faire.

Actuellement j'exécute ceci qui fonctionne très bien mais qui place l'enregistrement sous le même répertoire que le fichier actuel

Sub EnregistrerCopie()
Dim memPath As String
    'enregistrer les modifications apportées au classeur
    ThisWorkbook.Save
    'mémoriser le path du classeur
    memPath = ThisWorkbook.FullName
    '"enregistrer sous" le classeur (faire une copie)
    ThisWorkbook.SaveAs "C:\test.xlsm"
    'ouvrir l'ancien classeur (celui d'avant l'"enregistrer sous")
    Application.Workbooks.Open memPath
    'fermer ce classeur (la copie)
    ThisWorkbook.Close False
End Sub

merci pour l'aide

Bonjour,

ThisWorkbook est le classeur exécutant le code donc c'est a priori l'original et non la copie. Voici un essai à adapter :

Sub EnregistrerCopie()

Dim memPath As String

    'ThisWorkbook.Save 'sauve original
    memPath = ThisWorkbook.path & "\sousdossier\" 'repertoire de la future copie
    ThisWorkbook.SaveCopyAs memPath & "copie.xlsm" 'enregistrement de la copie
    ThisWorkbook.Close True 'fermeture et sauvegarde de l'original

End Sub

Cdlt,

Bonjour

Merci pour l'aide

Cela fonctionne bien..il enregistre la copie dans sousdossier comme je veux, par contre je souhaite conserver ouvert l'ancien fichier

Comment faire ?

Merci

Bonjour,

Comme ça a priori :

Sub EnregistrerCopie()

Dim memPath As String

    ThisWorkbook.Save 'sauve original <<< reactivee
    memPath = ThisWorkbook.path & "\sousdossier\" 'repertoire de la future copie
    ThisWorkbook.SaveCopyAs memPath & "copie.xlsm" 'enregistrement de la copie
    'ThisWorkbook.Close True 'fermeture et sauvegarde de l'original <<< desactivee

End Sub

Cdlt,

Bonjour

C'est super efficace...merci beaucoup.

Je viens d'avoir l'idée maintenant d'extraire uniquement un onglet en sauvegarde. Mais si celui ci appel des macros (dans les modules du fichier source...Est ce possible ?

Merci

Bonjour,

Uniquement un onglet, c'est possible et le code si il y a du code lié à cet onglet, il sera toujours effectif sur le nouveau fichier. Mais les codes dans les modules standards seront perdus (si je ne dis pas de bêtise).

Cdlt,

Donc c'est pas un save copy as... par contre je ne sais pas faire.

Seriez vous m'aider..?

Merci pour le coup de main

Je veux bien vous aider mais je ne suis malheureusement pas devin . Dites moi ce que vous voulez faire précisément avec les noms d'onglets, éventuellement les répertoires, le nom de fichier à créer, etc...

Cdlt,

Super de vouloir m'aider ainsi.

Pour résumer c'est pour un de mes fichiers de mon boulot. On me demande de réaliser un document type permettant d'effectuer des relevés dimensionnels sur des pièces.

Hélas à mon boulot je suis sous 365 et à mon domicile un bon vieux excel 2003.. donc je n'ai as grand chose à partager comme fichier.

Le fichier se compose d'un onglet de saisie (son nom est "Saisie")...la base du fichier. Celui-ci regroupe "x" colonnes. 1 colonne = 1 cote (j'en ai 8 ou 9). Cet onglet me permet de regrouper l'intégralité des cotes de mon lot de pièce

Les autres onglets (C1, C2, C3 etc) permettent de regrouper les cartes de contrôle permettant de visualiser lot après lot les dérives... J'ai une macro qui effectue un copier coller de la colonne A de l'onglet saisie vers l'onglet C1 (copie sur dernière colonne vide)...etc pour B sur onglet C2 etc etc... Je maitrise cette étape par vba

Une fois toutes les copie effectuées je souhaite sauvegarder l'onglet "Saisie" dans un autre fichier afin d'avoir un rapport individuel de mon lot. Ce fichier devrait porter le nom de mon numéro identifier sur une cellule (B2 il me semble). Au début je pensais faire un enregistrer sous mais je n'ai pas besoin de véhiculer les onglets C1, C2 etc qui ne servent à rien et qui vont alourdir la copie pour rien

Le dossier de sauvegarde sera sur la racine du fichier de base pour y stocker les copies, dossier "sauvegarde". Et donc ce qui serait bien c'est de faire l'extraction de l'onglet "Saisie", le stocker dans le dossier "sauvegarde" de le fermer ou qu'in ne soit pas ouvert et donc de laisser ouvert le source. Après la personne contrôlera les dérives sur les autres onglets

Le fichier sera fermer par la personne elle même jusqu'au prochain lot ou on remplacera les nouvelles données dans l'onglet "Saisie" en effacant au préalable le lot précédent.

J'espère avoir été clair !!!

MErci

Re,

Voici un essai tenant compte de ma compréhension des infos fournies :

Sub SauverSaisie()

Dim memPath$

with ThisWorkbook
    with .Sheets("Saisie")
        memPath = ThisWorkbook.path & "\sauvegarde\" & .range("B2").value & ".xlsm" 'chemin dépend B2 (de Saisie)
        .Saveas memPath 'enregistrer sous au chemin indiqué
    end with
    .save 'sauvegarde classeur
end with

End Sub

On sauvegarde dans racine\sauvegarde\. A chaque execution, on ne fait rien donc si B2 change de valeur, un autre fichier sera créé, sinon, le fichier d'origine sera écrasé et remplacé par le nouveau. Il faut juste que la copie soit fermée lors de l'exécution, sinon, ça provoquera un bug.

Puis, on sauve l'original.

Cdlt,

Merci pour le retour..

Je test ceci lundi mais cela correspond à ma demande. Je suis d'accord que le fichier de copie doit être fermé au risque de bug.

Pour moi cela reste une archive et le risque de conflit est infime.

Merci pour le temps accordé...Bon dimanche

Rechercher des sujets similaires à "enregistrement fichier"