Trouver la lettre d'un lecteur dans un fichier "neuf"
Le
ThierryP

Bonjour le forum,
Une question un peu rhétorique, qui n'avait pas de réponse il y a=
quelques années
en arrière ! Peut-être les choses ont-elles évolué
J'ai un fichier modèle installé sur plusieurs ordinateurs portabl=
es et également sur un mappage réseau.
En créant un nouveau fichier depuis le modèle, y a-t-il un moyen =
de connaître la lettre de lecteur (à part énumérer tout=
l'alphabet avec un test d'erreur) ?
Merci d'avance
ThierryP
Une question un peu rhétorique, qui n'avait pas de réponse il y a=
quelques années
en arrière ! Peut-être les choses ont-elles évolué
J'ai un fichier modèle installé sur plusieurs ordinateurs portabl=
es et également sur un mappage réseau.
En créant un nouveau fichier depuis le modèle, y a-t-il un moyen =
de connaître la lettre de lecteur (à part énumérer tout=
l'alphabet avec un test d'erreur) ?
Merci d'avance
ThierryP
J'ai pas tout compris.
La lettre de quoi ?
lecteur = Left(Application.DefaultFilePath, 1)
isabelle
Le 2017-02-09 à 11:34, ThierryP a écrit :
Je ne travaille pas à réseau et un certain nombre de choses que je n'ai pas eu l'occasion de
tester.
Cependant, il y toujours moyen d'ajouter un "NOM" dans la liste du classeur et à ce nom, tu lui
affectes le chemin du modèle.
En macro, pour créer ce "NOM" -->> Son_Chemin
ThisWorkbook.Names.Add "Son_Chemin", ThisWorkbook.Path
Et pour retrouver le lecteur où le fichier a été enregistré :
x = ThisWorkbook.Names("Son_Chemin")
x = Replace(x, "=", "")
x = Replace(x, """", "")
MsgBox Left(x, 1)
Est-ce possible dans ton environnement ?
MichD
"ThierryP" a écrit dans le message de groupe de discussion :
Bonjour le forum,
Une question un peu rhétorique, qui n'avait pas de réponse il y a quelques années
en arrière ! Peut-être les choses ont-elles évolué...
J'ai un fichier modèle installé sur plusieurs ordinateurs portables et également sur un mappage
réseau.
En créant un nouveau fichier depuis le modèle, y a-t-il un moyen de connaître la lettre de
lecteur (à part énumérer tout l'alphabet avec un test d'erreur) ?
Merci d'avance
ThierryP
Malheureusement, ta formule me renvoie uniquement le dossier par défau t indiqué dans les options d'Excel.
J'espérais vaguement qu'avec les progrès de Microsoft (non, je pl aisante !!) il serait possible de connaître l'emplacement d'origine du modèle .xltm utilisé.
Merci de t'intéresser à mon (petit) souci ;o)
ThierryP
Effectivement ta solution fonctionne avec une seule limitation : une fois l e modèle copié sur un PC, il faut l'ouvrir en tant modèle et le sauvegarder pour que le chemin soit affecté au "NOM".... mais ce n 'est pas vraiment un gros problème.
Merci pour l'astuce,
ThierryP
travaille pas à partir d'un réseau.
Ce qui suit sert à déterminer le répertoire par défaut sur un réseau. Pour remplacer les
fonctions ChDrive et ChDir.
'une procédure pour remplacer ChDir avec un lecteur/répertoire réseau
'Déclaration de l'API dans le haut d'un module standard:
Declare PtrSafe Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
'=================== Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub
'===================
'Example of usage
'=================== Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "\LOGD0FILESOGILVTWDocsTemp"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'===================
Je crois que ChDir échoue à activer un répertoire sur une machine distante. Le
code ci-dessous est souvent donné comme solution à ce problème sur le forum
anglophone (mais je crois bien que l'idée d'utiliser l'API SetCurrentDirectoryA
a été lancée par Laurent Longre).
MichD
fichier modèle,, le NOM devrait toujours représenter le chemin du fichier.
'--------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
if success = true then
'Mise à jour du NOM
End if
End Sub
'--------------------
MichD
'Déclaration de la variable dans le haut du Thisworkook
Dim FirstTime As Long
'-------------------------------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
If Success = True Then
ThisWorkbook.Names.Add "Son_Chemin", ThisWorkbook.Path
FirstTime = 0
Me.Save
End If
End Sub
'-------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
FirstTime = 1
End If
End Sub
'-------------------------------------------
MichD
"If Success = True And FirstTime = 1 Then"
MichD
'Déclaration de la variable dans le haut du Thisworkook
Dim FirstTime As Long
'-------------------------------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
If Success = True And FirstTime = 1 Then
ThisWorkbook.Names.Add "Son_Chemin", ThisWorkbook.Path
FirstTime = 0
Me.Save
End If
End Sub
'-------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
FirstTime = 1
End If
End Sub
'-------------------------------------------
MichD
Ton idée du "NOM" à ajouter est la bonne !
Et avec ce que tu m'as indiqué dans tes posts suivants, je vais m'en s ortir !
Et ça m'a permis de découvrir le "AfterSave" ! Parce que je ne co nnaissais que l'après-rasage... (humour débile d'un vendredi apr ès-midi)
Merci du coup de main
ThierryP