Enregistrer sous/fichier Personnl

Bonjour à tous,

Je cherche à envoyer mon dossier personnal à plusieurs utilisateurs et que lorsqu'ils l'ouvre, celui ci se place automatiquement dans leur dossier.

Le problème est que je ne connais pas le nom des utilisateurs:

Private Sub Workbook_Open()
    ChDir "C:\Users\Alain.DG\AppData\Roaming\Microsoft\Excel\XLSTART"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Alain.DG\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB", _
        FileFormat:=xlExcel12, CreateBackup:=False
End Sub

Du coup, je pensais faire une variable:

Private Sub Workbook_Open()
Dim utilisateur as string

    ChDir "C:\Users\" & utilisateur  & "\AppData\Roaming\Microsoft\Excel\XLSTART"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Alain.DG\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB", _
        FileFormat:=xlExcel12, CreateBackup:=False
End Sub

Mon problème est que je ne vois pas comment dire utilisateur = l'utilisateur de ce PC.

Avez-vous une idée?

Merci de votre aide!

Alain

Hello,

Avec la méthode Environ, tu peux retrouver le nom de l'user dans la session windows, normalement c'est ce code :

utilisateur = Environ("username")

tuto sur Environ ici :

http://excel-malin.com/tutoriels/vba-fonctions/vba-fonction-environ/

Par contre si l'utilisateur a déjà le fichier et que tu sauvegarde, l'utilisateur risque d'avoir un message lui demandant s'il veut sauvegarder dessus, du coup, peut être ajouter ConflictResolution:=xlLocalSessionChanges au reste du code de saveas

ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Alain.DG\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB", _
        FileFormat:=xlExcel12, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges

Bonjour,

il suffit d'utiliser la fonction VBA accédant à l'environnement Windows, comme ceci :

ChDir Environ("APPDATA") & "\Microsoft\Excel\XLSTART"
thev a écrit :

Bonjour,

il suffit d'utiliser la fonction VBA accédant à l'environnement Windows, comme ceci :

ChDir Environ("APPDATA") & "\Microsoft\Excel\XLSTART"

super merci! merci à vous deux.

voici ce que je tente de faire mais pour le moment sans succès:

Private Sub Workbook_Open()
ActiveWorkbook.SaveAs Filename:= ChDir Environ("APPDATA") & "\Microsoft\Excel\XLSTART", _
        FileFormat:=xlExcel12, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges
End Sub

il y'a chrdir() devant le chemin au niveau du code de filename, du coup ça plante.

SaveAs Filename:= ChDir

waard a écrit :

il y'a chrdir() devant le chemin au niveau du code de filename, du coup ça plante.

SaveAs Filename:= ChDir

Merci Waard.

J'ai tenté de nouveau avec cela

Private Sub Workbook_Open()
ActiveWorkbook.SaveAs Filename:=Environ("APPDATA") & "\Microsoft\Excel\XLSTART", _
FileFormat:=xlExcel12, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges
End Sub

mais Excel me dit "Variable objet ou variable de bloc With non définie.."

J'ai tenté un with mais sans succès.

As-tu une idée du problème?

après xlstart, il manque le nom du fichier à enregistrer, j'ai tester le code dans xlstart dans tes conditions d'utilisation, ça la fait, par contre l'alerte save c'est comme même affichée, donc je l'ai supprimé le temps de sauvegarder, en dégageant l'évent en utilisant displayalert

Private Sub Workbook_Open()
Application.DisplayAlerts = False 'supprimer event alerte sauvegarde
ActiveWorkbook.SaveAs Filename:=Environ("APPDATA") & "\Microsoft\Excel\XLSTART\PERSONALessai.XLSB", _
        FileFormat:=xlExcel12, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges
Application.DisplayAlerts = True 'restaurer event alerte sauvegarde
End Sub
waard a écrit :

après xlstart, il manque le nom du fichier à enregistrer, j'ai tester le code dans xlstart dans tes conditions d'utilisation, ça la fait, par contre l'alerte save c'est comme même affichée, donc je l'ai supprimé le temps de sauvegarder, en dégageant l'évent en utilisant displayalert

Private Sub Workbook_Open()
Application.DisplayAlerts = False 'supprimer event alerte sauvegarde
ActiveWorkbook.SaveAs Filename:=Environ("APPDATA") & "\Microsoft\Excel\XLSTART\PERSONALessai.XLSB", _
        FileFormat:=xlExcel12, CreateBackup:=False, ConflictResolution:=xlLocalSessionChanges
Application.DisplayAlerts = True 'restaurer event alerte sauvegarde
End Sub

Merci encore pour ton aide...

j'avance... j'ai copié collé le code dans un fichier sur le bureau puis fermé, puis ouvert et j'ai encore le même message d'erreur (manque With) et le fichier ne s'enregistre pas dans XLSTART..

je ne comprends pas.. Peut-être que c'est le chemin d'accès qui n'est pas reconnu.

j'ai lancé le code ça a marché les 5 fois que je l'ai fait, y'a t'il vraiment que ça dans ton code ? N'y a t'il pas d'autres lignes de code dans la sub ? Y'a t'il une autre sub dans le classeur ou ceux ouvert où il y'aurai un problème de codage avec with end with ?

waard a écrit :

j'ai lancé le code ça a marché les 5 fois que je l'ai fait, y'a t'il vraiment que ça dans ton code ? N'y a t'il pas d'autres lignes de code dans la sub ? Y'a t'il une autre sub dans le classeur ou ceux ouvert où il y'aurai un problème de codage avec with end with ?

Alors j'ai fait différents tests et c'est assez bizarre. Je l'ai envoyé à deux collègues.

Le fichier ne se met pas dans le répertoire MAIS les macros sont sauvegardées et elles peuvent les réutiliser en bouton accès rapide par exemple.

Pour répondre à ta question, je n'ai pas d'autres procédures événementielles mais j'ai quatre autres modules dans ce document.

Hellsoir,

Alaindeg a écrit :

Le fichier ne se met pas dans le répertoire MAIS les macros sont sauvegardées et elles peuvent les réutiliser en bouton accès rapide par exemple.

heeuuu, du coup y'a toujours une erreur ? ça marche ou y'a une confusion avec un truc déjà installé qui y ressemble ?

Bon sinon, je reviens au problème de base, j'étais un peu perdu, j'ai navigué sur le net et lancé des trucs au hasard sur excel, histoire d'avoir ton message d'erreur et là, illumination j'ai eu le message et je crois que j'ai compris !!

Techniquement ( en dehors de l'alerte fichier sauvegardé qui reste et que j'ai du supprimé par display.alert) le code tel quel précédemment marche bien ... Marche bien, que si on a que le fichier personnal d'ouvert et waip en lançant la macro avec un autre fichier ouvert ça ma planté la save.

Du coup j'ai constaté qu'il ne faut pas utilisé activeworkbook mais thisworbook, car par définition personnal quand il est correctement fait, se lance en mode caché et n'est donc pas classeur actif, mais le fichier cliqué et vba ne comprend pas, il cherche, ça plante !

ThisWorkbook.SaveAs

J'ai testé avec un message à la fin du code à l'ouverture du personnal et j'ai toujours eu mes saves sur différents chemin et l'affichage du message, même avec des classeurs ouvert en plus, donc normalement ce doit être bon , s'il y'a toujous un problème avec le message d'erreur with, regarde tes variables objets dans les autres macros, d'après l'éditeur ce pourrait être une cause de problème aussi.

Qqes liens de mon errance sur internet si intéressé (je suppose que tu doit déjà connaitre le 1er) :

Lien sur le désaffichage de personnal : https://support.office.com/fr-fr/article/Cr%C3%A9er-et-enregistrer-toutes-vos-macros-dans-un-classeur-unique-66c97ab3-11c2-44db-b021-ae005a9bc790

Lien sur les 2 causes possibles de l'erreur with end (voir si tes variables objets sont correctement déclarées dans les autres macros) :

https://msdn.microsoft.com/fr-fr/library/5szkzs17(v=vs.120).aspx

@+ et dis nous si ça marche

9personalessai.xlsb (11.99 Ko)

Yahoo, ça marche merci!

Rechercher des sujets similaires à "enregistrer fichier personnl"