Bonjour a tous!
je realise actuellement une macro qui sera utilisé par plusieurs personnes dans mon entreprise, il faut donc qu'elle soit au maximum portable.
A un moment de l'execution, je demande a l'utilisateur de choisir un dossier pour enregistrer ses resultats, j'ai trouvé une methode relativement simple qui permet cela mais qui a un probleme, c'est que l'on ne peut pas choisir le bureau comme repertoire d'enregistrement ce qui est fort penible...
Le chemin du bureau a comme syntaxe (pour mon ordi tout du moins):
C:\Documents and Settings\"login"\"nom de l'ordinateur"\Bureau
j'ai donc pensé à plusieurs idées:
- remplacer le message affiché par ceci mais je suis pas sur que cela marche toujours
- utiliser plusieurs variables d'environnement mais pareil, pas sur que ca marche toujours
- ou alors utiliser la base de registre mais la ca sort de mes compétences
- autre solution, recupérer le resultat d'un ligne shell (cmd.exe) qui affiche sur mon ordi le chemin vers le bureau
laquelle de ces solution est la plus "portable" d'apres vous?
Pour la derniere on pourai me dire comment faire siouplait?
Merci
je realise actuellement une macro qui sera utilisé par plusieurs personnes dans mon entreprise, il faut donc qu'elle soit au maximum portable.
A un moment de l'execution, je demande a l'utilisateur de choisir un dossier pour enregistrer ses resultats, j'ai trouvé une methode relativement simple qui permet cela mais qui a un probleme, c'est que l'on ne peut pas choisir le bureau comme repertoire d'enregistrement ce qui est fort penible...
Le chemin du bureau a comme syntaxe (pour mon ordi tout du moins):
C:\Documents and Settings\"login"\"nom de l'ordinateur"\Bureau
Code:
Dim ObjShell As Object, ObjFolder As Object
Dim SecuriteSlash As Integer
Dim Chemin As String
Set ObjShell = CreateObject("Shell.Application")
Set ObjFolder = ObjShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Chemin = ObjFolder.ParentFolder.ParseName(ObjFolder.Title).Path & ""
If ObjFolder.Title = "Bureau" Then [COLOR="Red"]Msgbox "Choisisez un autre repertoire!"[/COLOR]
If ObjFolder.Title = "" Then Chemin = ""
SecuriteSlash = InStr(ObjFolder.Title, ":")
If SecuriteSlash > 0 Then Chemin = Mid(ObjFolder.Title, SecuriteSlash - 1, 2) & ""
j'ai donc pensé à plusieurs idées:
- remplacer le message affiché par ceci mais je suis pas sur que cela marche toujours
Code:
Chemin = "C:\Documents and Settings\All Users\Bureau"
- utiliser plusieurs variables d'environnement mais pareil, pas sur que ca marche toujours
Code:
Chemin = Environ("USERPROFILE") & "\" & Environ("COMPUTERNAME") & "\Bureau"
- ou alors utiliser la base de registre mais la ca sort de mes compétences
Code:
CSIDL_DESKTOPDIRECTORY = &H10
- autre solution, recupérer le resultat d'un ligne shell (cmd.exe) qui affiche sur mon ordi le chemin vers le bureau
Code:
prompt $P
laquelle de ces solution est la plus "portable" d'apres vous?
Pour la derniere on pourai me dire comment faire siouplait?
Merci