VBA Excel Enregistrer sous

Bonjour,

Je cherche à créer une macro qui m’enregistre un fichier de base dans un autre dossier MAIS en gardant le fichier de base actif et ouvert (sorte de classement automatisé)…

Je n’arrive jamais à conserver le fichier de base ouvert.

Merci d’avance pour vos lumières

Salut,

Tu veux donc faire un enregistrer sous ? Et à la fin de cette opération tu auras deux fichiers.
Donc pourquoi n’utiliserais-tu pas l’enregistreur de macro de excel ? Il te permet de mettre en code VBA les choses que tu fait graphiquement. Ensuite tu n’aurais qu’à modifier ta fonction.

Le problème est bien là :

J’arrive à créer la fonction SaveAs mais le fichier que j’obtiens en fin de macro est le fichier “modifié” et non celui de base…

Pour l’illustrer :

Fichier budget de base.xls dans mes documents

MACRO

Fichier budget 2010.xls dans mes documents\2010 (enregistré et classé)

Fichier budget de base.xls ouvert et actif.

Donc tu veux que le fichier de bases ne sois plus enregistrer où il est en ce moment ? Mais enregistrer dans la nouvelle location ?

Non non, je m’exprime mal

Je voudrais conserver le fichier de base dans le même dossier et en permanence actif.

Je souhaite enregistrer une copie (avec nom différent) dans un autre dossier mais sans l’ouvrir ou devoir Fermer/ouvrir le fichier de base…

Je suis plus clair ? :pt1cable:

Oui,

Donc tu veux, en quelque sorte, faire un copy de ton fichier à l’état présent mais le mettre ailleurs.
Pour faire cela tu pourrais :
Enregistrer normal le fichier présent (reste ouvert)
Copier le fichier ailleurs et le renommer.

voilà… Mais comme je dois faire l’opération environ 50 fois (avec des noms différents), je me dis qu’une macro pourrait faire ce travail…
Edité le 10/11/2009 à 15:37

Oui bien sure.
Mais je te décrivais la macro ^^
Avec l’enregistreur de macro :
Enregiste ton fichier

Ensuite grâce au language tu perfectionne ta fonction pour qu’il copy se même fichier ailleurs.


Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.CopyFile "c:\tmp\Fichier1.txt","c:\tmp\Fichier2.txt",True ' True : pour copier en "écrasant" destination si existe..

Merci, je teste de suite