Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Chemin d'accès au bureau (VBA)

6 réponses
Avatar
j-pascal
Bonsoir,


ChDir "C:\Documents and Settings\toto\Bureau"

Si la session "Toto" n'existe pas, la seule chose que je sais faire
c'est un test qui, le cas échéant, me renverra vers Documents and
Settings (ie).

Y a-t-il un moyen d'accéder au Bureau de la session à partir de
laquelle on lance la macro, quel que soit le nom de la dite session ?
(Je pense à l'utilisation de "%")

Merci pour vos lumières,

JP

6 réponses

Avatar
isabelle
bonjour Jp,

Sub CheminRepertoiresBureau()
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
MsgBox objFolderItem.Path
End Sub

isabelle

j-pascal a écrit :
Bonsoir,


ChDir "C:Documents and SettingstotoBureau"

Si la session "Toto" n'existe pas, la seule chose que je sais faire
c'est un test qui, le cas échéant, me renverra vers Documents and
Settings (ie).

Y a-t-il un moyen d'accéder au Bureau de la session à partir de
laquelle on lance la macro, quel que soit le nom de la dite session ?
(Je pense à l'utilisation de "%")

Merci pour vos lumières,

JP




Avatar
j-pascal
Bonjour Isabelle,

Ouahh, ça ne s'invente pas !
Bon, je renonce à ne pas utiliser tous les codes que je ne comprends
pas, car j'ai vraiment besoin de celui-ci ! ;-)

Un grand merci

JP

bonjour Jp,

Sub CheminRepertoiresBureau()
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
MsgBox objFolderItem.Path
End Sub

isabelle

j-pascal a écrit :
Bonsoir,


ChDir "C:Documents and SettingstotoBureau"

Si la session "Toto" n'existe pas, la seule chose que je sais faire c'est
un test qui, le cas échéant, me renverra vers Documents and Settings (ie).

Y a-t-il un moyen d'accéder au Bureau de la session à partir de laquelle on
lance la macro, quel que soit le nom de la dite session ? (Je pense à
l'utilisation de "%")

Merci pour vos lumières,

JP




Avatar
MichDenis
Bonjour J-Pascal,

La suggestion d'Isabelle en plus court :

'----------------------------
Sub ObtenirCheminDuBureau()

Dim Obj As Object
Set Obj = CreateObject("WScript.Shell")
MsgBox Obj.SpecialFolders("Desktop")

End Sub
'----------------------------




"j-pascal" a écrit dans le message de groupe de discussion :
Bonsoir,


ChDir "C:Documents and SettingstotoBureau"

Si la session "Toto" n'existe pas, la seule chose que je sais faire
c'est un test qui, le cas échéant, me renverra vers Documents and
Settings (ie).

Y a-t-il un moyen d'accéder au Bureau de la session à partir de
laquelle on lance la macro, quel que soit le nom de la dite session ?
(Je pense à l'utilisation de "%")

Merci pour vos lumières,

JP
Avatar
j-pascal
Bonsoir,

Un véritable "couteau suisse". Je retiens tes 2 propositions mais plus
spécialement la précédente car je vais en avoir souvent besoin.

Merci

JP

Il y a aussi ceci :

'Déclaration des constantes et API dans le haut d'un module standard
Public Const NOERROR = 0
Public Const MAXPATH = 260
Public Const FldrDeskTop1 = &H0
Public Const FldrStartMenuPrograms = &H2
Public Const FldrMyDocuments = &H5
Public Const FldrFavorites = &H6
Public Const FldrStartMenuProgramsStartUp = &H7
Public Const FldrRecent = &H8
Public Const FldrSendTo = &H9
Public Const FldrStartMenu = &HB
Public Const FldrDeskTop2 = &H10
Public Const FldrNetHood = &H13
Public Const FldrFonts = &H14
Public Const FldrShellNew = &H15

Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As Long) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" _
(ByVal pidList As Long, ByVal lpBuffer As String) As Long

Cette fonction fut publiée par : 'Daniel Lewis, mpep
'-------------------------------------
Public Function GetSpecialFolder(CSIDL As Long) As String
Dim Result As Long
Dim sPath As String
Dim pidl As Long
Result = SHGetSpecialFolderLocation(0, CSIDL, pidl)
If Result = NOERROR Then
sPath = Space(MAXPATH)
Result = SHGetPathFromIDList(ByVal pidl, ByVal sPath)
If Result Then
GetSpecialFolder = Left(sPath, InStr(sPath, Chr(0)) - 1)
End If
End If
End Function
'-------------------------------------

'Dans la procédure suivante tu n'as qu'à remplacer le nom de la constante
pour une 'constante définie plus haut pour obtenir le chemin du répertoire
désiré.

'C'est un peu plus long mais c'est plus que du bonbon ! ;-))
'-------------------------------
Sub test()
MsgBox GetSpecialFolder(FldrStartMenuProgramsStartUp)
End Sub
'-------------------------------


Avatar
thomasm
Le lundi 13 Avril 2009 à 22:35 par j-pascal :
Bonsoir,


ChDir "C:Documents and SettingstotoBureau"

Si la session "Toto" n'existe pas, la seule chose que je sais faire
c'est un test qui, le cas échéant, me renverra vers Documents and

Settings (ie).

Y a-t-il un moyen d'accéder au Bureau de la session à partir de
laquelle on lance la macro, quel que soit le nom de la dite session ?
(Je pense à l'utilisation de "%")

Merci pour vos lumières,

JP


Bonjour,

Le code donnant le chemin d'accés marche à la perfection cependant comment faire pour l'intégrer à la ligne de code pour enregistrer la feuille excel sur ce bureau (pour que cela fonctionne quelque soit la session sur laquelle est ouvert le fichier excel ?)

Voilà comment j'ai écris le code :

' ObtenirCheminDuBureau()

Dim Obj As Object
Set Obj = CreateObject("WScript.Shell")
MsgBox Obj.SpecialFolders("Desktop")

'enregistrement du fichier sur le bureau

ActiveWorkbook.SaveAs Filename:= _
Obj & "Nouveau dossierClasseur1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:úlse
ActiveWindow.Close

voilà merci d'avance
Avatar
thomasm
Le lundi 13 Avril 2009 à 22:35 par j-pascal :
Bonsoir,


ChDir "C:Documents and SettingstotoBureau"

Si la session "Toto" n'existe pas, la seule chose que je sais faire
c'est un test qui, le cas échéant, me renverra vers Documents and

Settings (ie).

Y a-t-il un moyen d'accéder au Bureau de la session à partir de
laquelle on lance la macro, quel que soit le nom de la dite session ?
(Je pense à l'utilisation de "%")

Merci pour vos lumières,

JP


Bonjour,

Le code donnant le chemin d'accés marche à la perfection cependant comment faire pour l'intégrer à la ligne de code pour enregistrer la feuille excel sur ce bureau (pour que cela fonctionne quelque soit la session sur laquelle est ouvert le fichier excel ?)

Voilà comment j'ai écris le code :

' ObtenirCheminDuBureau()

Dim Obj As Object
Set Obj = CreateObject("WScript.Shell")
MsgBox Obj.SpecialFolders("Desktop")

'enregistrement du fichier sur le bureau

ActiveWorkbook.SaveAs Filename:= _
Obj & "Nouveau dossierClasseur1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:úlse
ActiveWindow.Close

voilà merci d'avance