IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Enregistrer sous sans fermer ancien fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 156
    Points : 73
    Points
    73
    Par défaut Enregistrer sous sans fermer ancien fichier
    Bonjour,


    Je dispose d'un fichier excel, qui se nomme "fichier1".
    Je voudrais, en vba, l'enregistrer sous le nom "test1" sans fermer l'ancien fichier "fichier1".
    Est ce que cela est possible?


    Merci de votre aide.

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 40
    Points : 55
    Points
    55
    Par défaut
    moi je n'y suis pas parvenue.

    je rouvre donc mon fichier d'origine, après l'avoir enregistré sous

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Points : 1 577
    Points
    1 577
    Par défaut
    Bonjour,

    lorsque vous ne savez pas comment procéder pour programmer une opération en VBA, espionnez votre EXCEL:
    * Ouvrez votre fichier "fichier1"
    * Puis dans le menu 'Outils', choisissez le sous-menu 'Macro', puis la commande 'Nouvelle macro'
    * l'enregistreur de macro étant démarré, il mémorise toutes les actions que vous faites, et les traduit en langage VBA
    * Allez maintenant dans le menu 'Fichier', choisissez la commande 'Enregistrer sous...'
    * Dans la boite de dialogue, inscrivez "test1" pour le nom de fichier et validez.
    * Arrêtez l'enregistreur de macro, et allez dans l'éditeur VBA, en appuyant par exemple sur la combinaison de touche [Alt] + [F11]
    * Vous devez voir un dossier 'Modules' dans la fenêtre de projet.
    * Ouvrez celui-ci, vous devriez voir 'Module 1' qui contient la macro générée par EXCEL, qui correspond à la manoeuvre que vous avez fait.

    Voila, vous avez le code VBA qui vous permet de faire ce que vous vouliez.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 156
    Points : 73
    Points
    73
    Par défaut
    Merci pour cette réponse rtg57 mais cela ne répond pas à ma question.

    Je connais le principe de l'enregistreur de macro le pbl n'est pas la.
    Ce que je voudrais faire c'est enregistrer mon fichier1 sous le nom test1 sans fermer pour autant le fichier1.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Points : 149
    Points
    149
    Par défaut Enregistrer sous....
    Salut,

    le fait d' "enregistrer sous ..." revient à dire que le fichier courant change de nom ; l'objet Workbook est toujours le même mais pas son nom.

    Il n'est pas possible de "garder" l'ancien ouvert car c'est toujours l' "ancien".

    Il faut donc comme l'a dit turbo_sophie, le réouvrir

    En me relisant, je m'aperçois que je ne suis pas très clair.

    Lorsque vous faites "enregistrer sous ..." un fichier XL vous créez un nouveau fichier à l'endroit choisi et le fichier courant lui pointe sur ce nouveau fichier.
    Mais vous n'opérez pas de fermeture et de réouverture depuis excel. Donc le fichier Excel ouvert est toujours le même.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 237
    Points : 470
    Points
    470
    Par défaut ajout
    Bonjour à tous,

    Voici un essai par macro (même si ça ressemble un peu à du bidouillage...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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
    Bonne journée

    Edit:
    Sinon, il y a aussi la méthode .SaveCopyAs qui semble faire la même chose que tout le code précédent.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveCopyAs "LeNomQuiVaBien"
    ctac

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    A partir de lidée de rtg57, pourquoi ne pas enregistrer deux macros, une pour Enregistrer sous puis une pour Ouvrir l'ancien classeur et intégrer le code de la seconde dans celui de la première?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Autre manière
    1) mémoriser nom du classeur actuel (éventuellement aussi son chemin)
    2) enregistrer sous le nom désiré
    3) enregistrer sous le nom mémorisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NomClasseurOrigine = ThisWorkbook.Name
    CheminCourant = ThisWorkbook.Path & "\"
     
    ActiveWorkbook.SaveAs "Sauvegarde"
     
    ActiveWorkbook.SaveAs CheminCourant & NomClasseurOrigine

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut beau déterrage de topic (2011) !

    sinon il y a

    Référence du développeur Excel
    Workbook.SaveCopyAs, méthode
    Cette méthode enregistre une copie du classeur dans un fichier sans modifier le classeur ouvert en mémoire.
    Syntaxe

    expression.SaveCopyAs(Filename)

    expression Variable qui représente un objet Workbook.

    Paramètres

    Nom Obligatoire/Facultatif Type de données Description
    Filename Facultatif Variante Spécifie le nom de fichier de la copie.

    Exemple


    Cet exemple montre comment enregistrer une copie du classeur actif.

    Visual Basic pour Applications
    ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] VBA : enregistrer sous et écraser le fichier existant
    Par juliusmarat dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/10/2010, 16h05
  2. Enregistre sous (choix d'un fichier)
    Par MarsOran dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 10/08/2009, 15h24
  3. enregistrer sous sans boite de dialogue vba access
    Par samson_02 dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/02/2009, 15h08
  4. Enregistrer et remplacer l'ancien fichier
    Par miketidy dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/08/2008, 09h12
  5. Enregistrer sous puis fermer trop rapide
    Par DomEltro dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2008, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo