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
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #26425747
Bonjour
J'ai pas tout compris.
La lettre de quoi ?
isabelle
Le #26425749
bonjour ThierryP,
lecteur = Left(Application.DefaultFilePath, 1)
isabelle
Le 2017-02-09 à 11:34, ThierryP a écrit :
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
MichD
Le #26425755
Bonjour,
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
ThierryP
Le #26425807
Bonjour Isabelle,
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
ThierryP
Le #26425813
Bonjour Denis,
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
MichD
Le #26425816
Voici un truc de ma bibliothèque que je n'ai jamais eu l'occasion de tester comme je ne
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
MichD
Le #26425819
Si tu utilises cet événement pour créer le "NOM", que tu places dans le ThisWorkbook de ton
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
MichD
Le #26425824
Je n'ai pas testé, mais avec ceci dans ton thisWorkbook, devrait régler ton problème!
'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
MichD
Le #26425825
Cette ligne de code "If Success = True Then" devrait plutôt s'écrire ainsi :
"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
ThierryP
Le #26425827
Re_bonjour,
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
Publicité
Poster une réponse
Anonyme