macro sauvegarde classeur excel

fred014

Habitué
Bonjour,
j'ai besoin d'un petit coup de main.
Au bureau on travail en réseau, j'ai créer un planning avec excel sur mon pc .
donc quand je ferme mon classeur une sauvegarde se crée automatiquement dans démarrage de façon que le matin
à l'ouverture de mon pc celui-ci s'ouvre automatiquement, jusque là pas de pb.
seulement lorsque je l 'envoi à un collègue son login"username" n'est pas le même que le mien donc au moment de la sauvegarde
ça fait un débogage.normal !!!!
voilà le code que j'utilise pour mon pc .
ma question est:
plûtot que de mettre mon username "tata.yoyo"par exemple est il possible de mettre autre chose style "%username% ou autre de façon à pouvoir l'utiliser sur n'importe quel pc sans avoir à modifier le login dans la macro

[cpp]
ActiveWorkbook.Save
Application.DisplayAlerts = False
chemin1 = "c:\documents and settings\tata.yoyo\bureau"
fname1 = "planning"
ActiveWorkbook.SaveAs "c:\documents and settings\tata.yoyo\bureau\planning"
chemin2 = "c:\documents and settings\tata.yoyo\menu démarrer\programmes\démarrage"
fname2 = "planning"
ActiveWorkbook.SaveAs "c:\documents and settings\tata.yoyo\menu démarrer\programmes\démarrage\planning"
[/cpp]

merci d'avance si quelqu'un peu m'aider
 

zeb

Modérateur
Oui.

La façon la plus propre est d'utiliser la fonction SHGetSpecialFolderLocation avec la constante CSIDL_STARTMENU.

On peut faire moins académique mais plus simple (selon la version de Windows) : utiliser la variable d'environnement USERNAME et recréer l'arborescence. Attention dans ce cas, si des customisations ont eu lieu sur le poste de destination, si les versions de Windows sont différentes ou de langues différentes.

Code:
MsgBox "Salut " & Environ("USERNAME") & "."

Tu sais tout, maintenant.
 

fred014

Habitué
Merci pour ta réponse,
j' opte pour le second donc voilà le code avec le petit changement.
Environ("username") récupère bien le login mais à la fermeture du classeur
j'ai un débogage qui apparait me disant qu'il ne trouve pas le chemin ou que le document n'existe pas ou un truc dans ce genre

[cpp]
Private Sub Workbook_Deactivate()

Dim utilisateur As Variant
utilisateur = Environ("username")

ActiveWorkbook.Save
Application.DisplayAlerts = False
chemin1 = "c:\documents and settings\utilisateur\bureau"
fname1 = "planning"
ActiveWorkbook.SaveAs "c:\documents and settings\utilisateur\bureau\planning"
chemin2 = "c:\documents and settings\utilisateur\menu démarrer\programmes\démarrage"
fname2 = "planning"
ActiveWorkbook.SaveAs "c:\documents and settings\utilisateur\menu démarrer\programmes\démarrage\planning"
end sub
[/cpp]
je ne comprend pas pourquoi ??????
 

zeb

Modérateur
Et si tu réfléchissais avant de poster !!!!
Comment veux-tu qu'il devine que utilisateur dans ta chaine est une variable ?

Clique sur spoiler quand tu auras réfléchis :o
Code:
chemin1 = "c:\documents and settings\" & utilisateur& "\bureau"
 

fred014

Habitué
merci entre temps j'y avait pensé mais il bloc au niveau activeworkbook.saveas.
je sais pas pourquoi même avec un simple classeur dans lequel je met cette macro il bloc toujours au même endroit.
je continu de chercher .

merci d'avance
 

zeb

Modérateur
Euh, tiens moi aussi j'ai réfléchi : Et si tu lui donnes une extension à ton fichier, genre .XLS ?
 

fred014

Habitué
si je fais comme ça, sa enregistre bien les modifications dans le classeur1 mais il me met la copie dans mes documents au lieu
de menu démarrer\programmes\démarrage
[cpp]
Private Sub Workbook_Deactivate()
Dim utilisateur As Variant
utilisateur = Environ("username")

ActiveWorkbook.SaveAs
Application.DisplayAlerts = False
chemin1 = "c:\documents and settings\ & utilisateur \bureau"
fname1 = "classeur1.xls"


chemin2 = "c:\documents and settings\ & utilisateur \menu démarrer\programmes\démarrage"
fname2 = "classeur1.xls"
[/cpp]
c'est presque ça je ne perd pas courage
 

fred014

Habitué
en fait aprés plusieurs tentative et recherche il n'arrive pas à trouver les fichier aprés " & utilisateur " car si j'essai de le faire sans rien mettre apres, ça marche.donc il me fais la copie dans documents and settings .
si quelqu'un à la solution merci d 'avance car là je pèche vraiment



 

fred014

Habitué
en fin de compte c'est utilisateur qui ne marche pas car si je le remplace par mon login sa marche alors comment faire
 

fred014

Habitué
en fin de compte c'est utilisateur qui ne marche pas car si je le remplace par mon login sa marche alors comment faire
[cpp]
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False

ActiveWorkbook.Save
ChDir "c:\documents and settings\administrateur\bureau"

Application.ActiveWorkbook.SaveAs "classeur1.xls"

ChDir "c:\documents and settings\administrateur\menu démarrer\programmes\démarrage"

Application.ActiveWorkbook.SaveAs "classeur1.xls"

end sub
[/cpp]
et des que je remet

Dim utilisateur As Variant
utilisateur = Environ("username" )


et remplace administrateur par utilisateur ça ne marche plus
 

zeb

Modérateur
Ligne 11 :
Code:
Private Sub Workbook_Deactivate()
Dim utilisateur As Variant
utilisateur = Environ("username" )
ActiveWorkbook.SaveAs
Application.DisplayAlerts = False
chemin1 = "c:\documents and settings\ & utilisateur \bureau"
fname1 = "classeur1.xls"
chemin2 = "c:\documents and settings\ " & utilisateur & "\menu démarrer\programmes\démarrage"
fname2 = "classeur1.xls"

Ce n'est pas drôle de t'aider toi :o !
Sauf si tu ne sais pas qu'il faut cliquer sur spoiler pour voir s'afficher un message secret :whistle:
 

fred014

Habitué
ok sa marche en parti car sa met la copie dans mes documents et non dans demarrage
je vais chercher pourquoi
 

fred014

Habitué
ce n'est pas le probleme de la ligne 6 mais 8 .
lors dela copie du classeur qui se trouve sur le bureau , la copie se place dans mes documents et non dans menu demarrer\programmes\démarrage comme celà est marquer dans la ligne 8
 

zeb

Modérateur
si je fais comme ça, sa enregistre bien les modifications dans le classeur1 mais il me met la copie dans mes documents au lieu
de menu démarrer\programmes\démarrage
[cpp]
Private Sub Workbook_Deactivate()
Dim utilisateur As Variant
utilisateur = Environ("username")

ActiveWorkbook.SaveAs
Application.DisplayAlerts = False
chemin1 = "c:\documents and settings\ & utilisateur \bureau"
fname1 = "classeur1.xls"


chemin2 = "c:\documents and settings\ & utilisateur \menu démarrer\programmes\démarrage"
fname2 = "classeur1.xls"
[/cpp]
c'est presque ça je ne perd pas courage
Arg, oui batchy, ligne 7 et 11 de ce message.

( Quand je pense que j'ai fait des smileys pour apprendre aux autres à se servir du forum :whistle: )
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 079
Messages
6 716 702
Membres
1 586 247
Dernier membre
MrAzgarIII
Partager cette page
Haut