macro pour sauvegarder fichier courant sur bureau

L

loulou

Guest
Bonjour a tous,

Je me demande si quelqu'un pourrait m'indiquer comment faire une macro excel pour sauvegarder le fichier courant sur le bureau avec son propre nom?
malgré de nombreuses tentatives, je n'ai pas reussi.

Merci et a bientôt

loulou
 
G

Gérard DEZAMIS

Guest
Sub VersBureau()
ChDir "C:\WINDOWS\Bureau"
ActiveWorkbook.SaveAs Filename:="C:\WINDOWS\Bureau\Nom du fichier.xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Range("A1").Select
End Sub

Avec ça cela devrait fonctionner correctement Bon courage !
 
@

@+Thierry

Guest
Bonsoir Loulou, Gérard, le Forum

Euh oui Gérard, mais je crois que notre ami Loulou cherche à faire quelque chose de plus compliqué que celà, à moins que je n'ai rien compris ce qui est possible aussi

Moi je comprends que Loulou veux se créer une copie de l'active WorkBook sur son bureau... Donc pour faire çà je ferai ceci :

Sub SaveCopyAsOnDeskTop()
Dim WB As Workbook
Dim DeskTopPath As String

DeskTopPath = "C:\Documents and Settings\Thierry\Desktop\" 'A ajuster Pour le UserName (selon la version de Windows çà peut varier aussi)

Set WB = ActiveWorkbook
WB.SaveCopyAs DeskTopPath & WB.Name
End Sub


NB ce code sauvera une copy du classeur actif sans pour autant sauver le classeur actif... sinon ajouter : WB.Save

Bon Travail
@+Thierry
 
L

loulou

Guest
Bonjour Thierry et Gérard,

Tout d'abord je vous remercie pour votre aide .

suite a mes essais sur mon pc les résultats sont les suivants :

Macro a Gérard:
Le systeme fonctionne, mais je souhaiterais que le fichier copié sur le bureau garde le nom qu'il a dans Excel (actuellement il prend toujours le même nom : "nom du fichier.xls")

Macro a Thierry :
Après avoir copié la macro dans Excel (version 97), lorsque je la lance on voit le sablier (curseur apparaitre - donc il fait qq chose) mais il n'y a a pas de fichier sauvegardé sur le bureau, j'ai essayé de le suivre pas a a pas mais je n'ai pas reussi a savoir ce qu'il fait


En fait lorsque je travaille sur un fichier excel, j'ai besoin de le sauvegarder regulierement sur le bureau et si necessaire y mettre un indice.

Pour cela j'aimerais que la macro ouvre la case dialogue 'sauver sous' en me dirigant automatiquement sur le bureau et en me proposant le nom du fichier actuel sur lequel je travaille.

Je ne sais pas si tout ca est possible, mais cela me faciliterait beaucoup la tache.

Merci encore et a bientôt

loulou
 
C

chris

Guest
Bonjour
Si la macro de Gérard fonctionne combine avec celle de @+Thierry :

Sub VersBureau()
Dim WB As Workbook
Set WB = ActiveWorkbook
SEt WB="C:\WINDOWS\Bureau\" & WB
ActiveWorkbook.SaveAs Filename:=WB, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Range("A1").Select
End Sub

Mais attention cela ne marchera pas forcement sur une autre machine (le chemin et le nom du bureau dépendent de la version Windows et de sa langue.

Chris
 
@

@+Thierry

Guest
Bonjour Chris, Gérard, Loulou

Je ne sais pas si SaveCopyAs existe sous 97... Mais comme je l'ai précisé il faut surtout changer le chemin indiqué dans le code pour l'adapter à l'emplacement du répertoire "Bureau"

En effet comme le confirme Chris, selon la version de Windows, et même la langue, ce chemin pour le bureau peut varier largement...

Une autre approche... au lieu d'écrire le chemin du DeskTop en dur on peut aussi le faire découvrir par VBA ... Voici ce qu'on peut faire :

Sub SaveAsOnDeskTop()
Dim ThePath As String
Dim TheFileToSave As Variant

ThePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & ActiveWorkbook.Name

TheFileToSave = Application.GetSaveAsFilename(ThePath, "Microsoft Excel,*.xls")
If TheFileToSave = False Then Exit Sub

With Application
.DisplayAlerts = False
ActiveWorkbook.SaveAs TheFileToSave
.DisplayAlerts = True
End With
End Sub

Cette macro trouvera seule le chemin du bureau, et te proposera une boite de dialogue "SaveAs" qui pointera sur ton bureau avec en proposition de nom le nom du classeur actif...

Mais attention, cette méthode sauvera donc le classeur actif sur ton bureau, mais la version d'origine de ce classeur que tu avais ouvert ne comportera aucun des changements que tu auras pu faire entre l'ouverture du classeur d'origine et le lancement de cette macro...

Bon Journée
@+Thierry
 
L

loulou

Guest
Hou la la !

Cette fois ci je décroche completement, "je suis largué".

Mon chemin d'acces bureau est le suivant :

"C:\Documents and Settings\jld\Bureau"

Pouvez vous svp simplifier la macro pour que ca marche , merci d'avance.

Loulou
 
@

@+Thierry

Guest
Bonsoir Loulou !!

Hou la la !!! LOL !!!

Je ne peux pas faire plus simple que ce que je t'ai proposé puisque c'est une macro universelle qui tournera sur n'importe quelle version de Win pour placer une copie du classeur actif sur le bureau avec au préalable une boite de dialogue de confirmation...

Enfin on peut "simplifier" comme çà :

Sub SaveAsOnDeskTop()
Dim ThePath As String
ThePath = "C:\Documents and Settings\jld\Bureau\"

ActiveWorkbook.SaveAs ThePath & & ActiveWorkbook.Name
End Sub

Mais attention cette macro ne te proposera pas de boite de dialogue d'enregistrement qui pointera sur ton bureau avec en proposition de nom le nom du classeur actif comme tu avais précisé dans ta demande...

De plus tu auras le message d'alerte lorsque tu "écrasera" le fichier sur ton bureau, évènement qui était aussi géré dans ma précédente proposition...

Bon Courage
@+Thierry
 
L

loulou

Guest
Bonjour Thierry et a tout l'équipe des sauveteurs,

finalement je suis revenu a ta macro d'origine, qui consiste a ouvrir une boite dialogue "sauver sous" dirigée sur le bureau et proposant le nom de fichier actif.

lorsque je lance le debogueur il s'arrete sur le with de
"With Application.DisplayAlerts"....." en me donnant le message d'erreur suivant :
"Erreur de compilation:
l'objet associe a With doit être de type defini par l'utilisateur, Object ou variant"

si tu pouvais m'indiquer ce qu'il faut faire pour résoudre le problème?

je t'envois ci joint ta macro adaptée par moi même:

Sub enregistrer_sous_bureau()

Dim ThePath As String
Dim TheFileToSave As Variant

ThePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & ActiveWorkbook.Name

TheFileToSave = Application.GetSaveAsFilename(ThePath, "MicrosoftExcel,*.xls")
If TheFileToSave = False Then Exit Sub

With Application.DisplayAlerts = False
ActiveWorkbook.SaveAs TheFileToSave.DisplayAlerts = True
End With

End Sub



merci et A+

Loulou
 
M

michel

Guest
bonjour Loulou ,Gerard ,@+Thierry et Chris

je viens de tester la version proposée par @+Thierry le 18-02-04 11:35( la solution qui cherche tout seul le chemin du bureau )
chez moi cela fonctionne sans aucune retouche ( win98 , excel 97 )

pour le dernier message de Loulou , essaye

Sub enregistrer_sur_bureau()
Dim ThePath As String
Dim TheFileToSave As Variant
ThePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & ActiveWorkbook.Name
TheFileToSave = Application.GetSaveAsFilename(ThePath, "MicrosoftExcel,*.xls")
If TheFileToSave = False Then Exit Sub
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs TheFileToSave
Application.DisplayAlerts = True
End Sub


bonne journée
michel
 
L

loulou

Guest
Bonjour Michel, Thierry, Gerard, Chris,

Ca y est, la macro fonctionne bien.
Apparement c'est le With qui posait un probleme sur mon poste.

Je vous remercie tous pour votre aide, votre bonne volonté, et votre patience.

Et a bientot sur le Forum


Loulou
 

Discussions similaires