Trouver la lettre d'un lecteur dans un fichier "neuf"
21 réponses
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) ?
Bonjour J'ai pas tout compris. La lettre de quoi ?
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
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) ?
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
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
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.
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 :
13aa833f-4490-4d51-b6de-dfd04bd478a0@googlegroups.com...
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) ?
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
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
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).
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
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
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
'--------------------
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
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
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
'-------------------------------------------
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
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
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
'-------------------------------------------
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