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

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

21 réponses
Avatar
ThierryP
Bonjour le forum,

Une question un peu rh=C3=A9torique, qui n'avait pas de r=C3=A9ponse il y a=
quelques ann=C3=A9es
en arri=C3=A8re ! Peut-=C3=AAtre les choses ont-elles =C3=A9volu=C3=A9...

J'ai un fichier mod=C3=A8le install=C3=A9 sur plusieurs ordinateurs portabl=
es et =C3=A9galement sur un mappage r=C3=A9seau.

En cr=C3=A9ant un nouveau fichier depuis le mod=C3=A8le, y a-t-il un moyen =
de conna=C3=AEtre la lettre de lecteur (=C3=A0 part =C3=A9num=C3=A9rer tout=
l'alphabet avec un test d'erreur) ?

Merci d'avance

ThierryP

10 réponses

1 2 3
Avatar
Geo
Bonjour
J'ai pas tout compris.
La lettre de quoi ?
Avatar
isabelle
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
Avatar
MichD
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
Avatar
ThierryP
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
Avatar
ThierryP
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
Avatar
MichD
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
Avatar
MichD
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
Avatar
MichD
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
Avatar
MichD
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
Avatar
ThierryP
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
1 2 3