OVH Cloud OVH Cloud

Path d'un modèle ?

4 réponses
Avatar
Joël GARBE
Bonsoir à tous,

Lorsqu'on ouvre un modèle excel à partir de l'explorateur windows, y a-t-il
un moyen (en VBA) de connaître l'endroit où il est stocké, de façon à
pourvoir enregistrer le classeur généré à partir de ce modèle dans le même
dossier...

Vous me suivez ?

Cela reveindrait en quelque sorte, sauf erreur de ma part, à trouver le
dossier actif de l'explorer ?

En espérant que l'un(e) d'entre-vous it la solution,
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr

4 réponses

Avatar
MichDenis
Bonjour Joël,

'Liste des constantes des principaux répertoires
'Api à déclarer 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 'Bureau
Public Const FldrNetHood = &H13
Public Const FldrFonts = &H14 'Police
Public Const FldrShellNew = &H15 'Modèle

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


'Publié 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

Et dans cette procédure, tu remplaces la constante par celle désirée :

Sub test()
MsgBox GetSpecialFolder(FldrShellNew)
End Sub


Salutations!

"Joël GARBE" a écrit dans le message de news: 42238e61$0$11706$
Bonsoir à tous,

Lorsqu'on ouvre un modèle excel à partir de l'explorateur windows, y a-t-il
un moyen (en VBA) de connaître l'endroit où il est stocké, de façon à
pourvoir enregistrer le classeur généré à partir de ce modèle dans le même
dossier...

Vous me suivez ?

Cela reveindrait en quelque sorte, sauf erreur de ma part, à trouver le
dossier actif de l'explorer ?

En espérant que l'un(e) d'entre-vous it la solution,
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
Avatar
Joël GARBE
Bonsoir Denis et merci pour cette réponse pécise,

Malheureusement, à moins que j'ai manqué quelquechose, elle ne semble pas
répondre à ma question...

Imagine un modèle enregistré dans un dossier quelconque, en double-cliquant
dessus à partir de l'explorer, on génère un classeur dans excel. Mais ce
classeur n'a aucun path... puisque non enregistré..., et l'utilisateur ne
fait pas fichier>Nouveau pour créer son classeur à partir de ce modèle...

Une autre idée.???
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"MichDenis" a écrit dans le message de news:

Bonjour Joël,

'Liste des constantes des principaux répertoires
'Api à déclarer 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 'Bureau
Public Const FldrNetHood = &H13
Public Const FldrFonts = &H14 'Police
Public Const FldrShellNew = &H15 'Modèle

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


'Publié 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

Et dans cette procédure, tu remplaces la constante par celle désirée :

Sub test()
MsgBox GetSpecialFolder(FldrShellNew)
End Sub


Salutations!

"Joël GARBE" a écrit dans le message de news:
42238e61$0$11706$
Bonsoir à tous,

Lorsqu'on ouvre un modèle excel à partir de l'explorateur windows, y
a-t-il
un moyen (en VBA) de connaître l'endroit où il est stocké, de façon à
pourvoir enregistrer le classeur généré à partir de ce modèle dans le même
dossier...

Vous me suivez ?

Cela reveindrait en quelque sorte, sauf erreur de ma part, à trouver le
dossier actif de l'explorer ?

En espérant que l'un(e) d'entre-vous it la solution,
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr





Avatar
anonymousA
bonsoir,

peux-tu m'expliquer la différence entre
MsgBox GetSpecialFolder(FldrShellNew)
et MsgBox Application.TemplatesPath.

En essaynt les 2 écritures, je vois bien que ce n'est pas la même chose
mais pourquoi ?

A+



Bonjour Joël,

'Liste des constantes des principaux répertoires
'Api à déclarer 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 'Bureau
Public Const FldrNetHood = &H13
Public Const FldrFonts = &H14 'Police
Public Const FldrShellNew = &H15 'Modèle

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


'Publié 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

Et dans cette procédure, tu remplaces la constante par celle désirée :

Sub test()
MsgBox GetSpecialFolder(FldrShellNew)
End Sub


Salutations!

"Joël GARBE" a écrit dans le message de news: 42238e61$0$11706$
Bonsoir à tous,

Lorsqu'on ouvre un modèle excel à partir de l'explorateur windows, y a-t-il
un moyen (en VBA) de connaître l'endroit où il est stocké, de façon à
pourvoir enregistrer le classeur généré à partir de ce modèle dans le même
dossier...

Vous me suivez ?

Cela reveindrait en quelque sorte, sauf erreur de ma part, à trouver le
dossier actif de l'explorer ?

En espérant que l'un(e) d'entre-vous it la solution,


Avatar
MichDenis
Bonjour,

MsgBox GetSpecialFolder(FldrShellNew) = des modèles système comme un classeur de type xl4 ou xl5 , des modèles système
aussi pour word, powerpoint ... (ces modèles ont des extentions .xls)

MsgBox Application.TemplatesPath = Modèles de fichier excel ayant l'extension .xlt , dédiés à être utilisé à répétition
pour une tâche précise ....!


Salutations!



"anonymousA" a écrit dans le message de news: 422395e4$0$19320$
bonsoir,

peux-tu m'expliquer la différence entre
MsgBox GetSpecialFolder(FldrShellNew)
et MsgBox Application.TemplatesPath.

En essaynt les 2 écritures, je vois bien que ce n'est pas la même chose
mais pourquoi ?

A+



Bonjour Joël,

'Liste des constantes des principaux répertoires
'Api à déclarer 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 'Bureau
Public Const FldrNetHood = &H13
Public Const FldrFonts = &H14 'Police
Public Const FldrShellNew = &H15 'Modèle

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


'Publié 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

Et dans cette procédure, tu remplaces la constante par celle désirée :

Sub test()
MsgBox GetSpecialFolder(FldrShellNew)
End Sub


Salutations!

"Joël GARBE" a écrit dans le message de news: 42238e61$0$11706$
Bonsoir à tous,

Lorsqu'on ouvre un modèle excel à partir de l'explorateur windows, y a-t-il
un moyen (en VBA) de connaître l'endroit où il est stocké, de façon à
pourvoir enregistrer le classeur généré à partir de ce modèle dans le même
dossier...

Vous me suivez ?

Cela reveindrait en quelque sorte, sauf erreur de ma part, à trouver le
dossier actif de l'explorer ?

En espérant que l'un(e) d'entre-vous it la solution,