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

Si le fichier est localisé....

14 réponses
Avatar
denys.p
Bonjour,

Est-il possible qu'une macro puisse effectuer des instructions selon l'empl=
acement du fichier ?

Voici: j'ai deux fichiers identiques qui sont situ=E9s 1) dans le W et l'au=
tre dans le L

Chaque matin, je copie le fichier du W et le colle dans le L.... Chaque mat=
in aussi, l'usager du W clique sur un bouton sur la feuille Data et va cher=
cher de l'information sur un fichier sur le W.... et c'est la m=EAme chose =
pour l'usager du "drive" L....il clique sur le bouton qui va chercher l'inf=
o sur le L.

Lorsque je copie le fichier le matin, je dois toujours changer l'info dans =
le VBA afin que l'usager du L puisse aller chercher la bonne info (celle du=
L et non pas celle du W).

J'ai donc deux lignes de code

'Workbooks.Open Filename:=3D"\\W etc...
Workbooks.Open Filename:=3D"\\L etc...

et je mets un apostrophe devant celui que je veux cacher...

Y a-t-il moyen de dire =E0 excel quelque chose dans le genre.... si le fich=
ier actuel est dans le W alors Workbooks.Open Filename:=3D"\\W etc... sino=
n Workbooks.Open Filename:=3D"\\L etc...

Juste pour m'=E9viter de faire des erreurs....

Ce serait gentil...

Merci pour votre temps

Denys

4 réponses

1 2
Avatar
denys.p
Excellent....

Merci beaucoup à tous.... ça fonctionne maintenant....

Au lieu d'une lettre, je mettais le chemin complet du serveur....

Maintenant ça roule bien

Bonne fin de semaine à tous et merci pour votre aide :-)

Denys
Avatar
denys.p
Le vendredi 15 mai 2015 10:30:51 UTC-4, MichD a écrit :
Je ne travaille pas en réseau et je n'ai pas accès à un réseau


Je n'ai pas de moyen de tester, mais j'ai déjà lu que ChDir ne donnai t pas les
résultats attendus quand on cherche à accéder au dossier d'un ordin ateur
distant. Il existe une fonction de substitution pour contourner ce probl ème, qui
pourrait peut-être t'aider à régler ton problème (code à recopi er dans un module
standard du classeur où tu veux l'utiliser) :

'================
'une procédure pour remplacer ChDir avec un lecteur/répertoire rése au

'Déclaration de L'API à placer dans le haut d'un module standard
Declare Function SetCurrentDirectoryA Lib _
"kernel32" (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 afin de changer le répertoire "actif". Ceci remplace l a commande ChDir()
dans un environnement
'-----------------------------------------------------------------
Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "LOGD0FILESOGILVTWDocsTemp" 'Tu utilises le chemin que tu désires (réseau)
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'-----------------------------------------------------------------



Effectivement Denis...en réseau c'est pas mal plus compliqué....
Avatar
Jacky
Hello Denis

Je ne travaille pas en réseau et je n'ai pas accès à un réseau



Un code Vba que j'utilise perso.(sans ChDir) dans un petit réseau et qui fait du bon boulot ;o)
'--------------------------------
Sub OuvertureFichierDistant()
Dim LePCdistant As String, LeClasseurDistant As String
If Environ("COMPUTERNAME") = "BUREAU" Then
LePCdistant = "LeNomDuPc1rep1rep2rep3"
LeClasseurDistant = "xxxxxx.xlsm"
Else
LePCdistant = "LeNomDuPc2rep1rep2rep3"
LeClasseurDistant = "yyyyyy.xlsm"
End If
'
Workbooks.Open Filename:=LePCdistant & LeClasseurDistant 'ouverture fichier distant
'''''
'''''
'etc..
End Sub
'---------------------------------
--
Salutations
JJ


"MichD" a écrit dans le message de news: mj4vul$jra$
Je ne travaille pas en réseau et je n'ai pas accès à un réseau


Je n'ai pas de moyen de tester, mais j'ai déjà lu que ChDir ne donnait pas les
résultats attendus quand on cherche à accéder au dossier d'un ordinateur
distant. Il existe une fonction de substitution pour contourner ce problème, qui
pourrait peut-être t'aider à régler ton problème (code à recopier dans un module
standard du classeur où tu veux l'utiliser) :

'=============== > 'une procédure pour remplacer ChDir avec un lecteur/répertoire réseau

'Déclaration de L'API à placer dans le haut d'un module standard
Declare Function SetCurrentDirectoryA Lib _
"kernel32" (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 afin de changer le répertoire "actif". Ceci remplace la commande ChDir()
dans un environnement
'-----------------------------------------------------------------
Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "LOGD0FILESOGILVTWDocsTemp" 'Tu utilises le chemin que tu désires (réseau)
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'-----------------------------------------------------------------

Avatar
MichD
Bonjour Jacky,

La fonction de Laurent Longre est utile dans le cas par exemple où tu veux
définir le chemin par défaut sur un réseau pour par la suite ouvrir l'explorateur
Windows directement dans le répertoire du lecteur réseau désiré. Je crois que
combinaison des commandes "Chdrive()" et "Chdir()" ne fonctionne pas dans
un tel environnement.

x = Application.GetOpenFilename
1 2