Macro Excel et réseau

Fermé
Warbler - 29 avril 2005 à 13:48
 Warbler - 2 mai 2005 à 10:53
Bonjour,
J'ai des macros Excel qui ouvrent des fichiers du genre :
Workbooks.Open Filename:="C:\Mes Documents\Répertoire\Monfichier.xls"

Ces macros ne fonctionnent pas en réseau quand je les lance d'un autre poste.
Dans ce cas l'ouverture se fait avec
Workbooks.Open Filename:= \\Nom_Ordi\Mes Documents\ Répertoire\Monfichier.xls"

…mais cette syntaxe ne fonctionne pas sur le poste où se trouve le fichier !

Comment faire pour faire tourner mes macros quel que soit le poste utilisé pour les lancer ?

A l'avance merci pour vos lumières

4 réponses

tompols Messages postés 1219 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 460
29 avril 2005 à 14:17
Salut,

En rajoutant une condition du type
If nom_ordi_utilisé = nom_ordi then Workbooks.Open Filename:="C:\Mes Documents\Répertoire\Monfichier.xls"
Else Workbooks.Open Filename:="C:\Mes Documents\Répertoire\Monfichier.xls"

Non ???
0
Merci pour la réponse.
Mais quelle est la commande VBA pour extraire le nom de l'ordi ?

Y-at-il une commande du genre "Application.username" qui donne le nom de l'utilisateur courant ?

@+ warbler
0
Armojax Messages postés 1855 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 novembre 2022 1 517
29 avril 2005 à 14:20
Bonjour Warbler,

Peux-tu regarder si le UserName diffère d'un poste du réseau à l'autre, ce qui est probablement le cas (en faisant : MsgBox Application.UserName, par exemple).

Auquel cas, tu peux paramétrer ta commande :
If Application.UserName = "Toto" Then etc.
0
merci pour ta réponse.
ça marche (après avoir différencié les username).

Mais y-a-t-il une commande VBA pour extraire le nom de l'ordi ?
ça serait plus pratique, car il y a plusieurs utilisateurs par postes.

@+ Warbler
0
Armojax Messages postés 1855 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 novembre 2022 1 517
29 avril 2005 à 16:50
L'accès au nom de l'ordinateur n'existe pas en standard dans VBA, à ma connaissance.
On a un moyen avec l'API de Windows. Je ne l'ai jamais fait. Il faut définir des modules de classe et accéder aux dll de Windows.
Je buche en ce moment la question, mais pour le moment je n'ai pas la solution...
Si ça ne prend pas trop de temps et si j'y arrive, je repasse par là...
Si quelqu'un d'autre sait le faire, il est le bienvenu...
0
Armojax Messages postés 1855 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 novembre 2022 1 517
29 avril 2005 à 17:13
Trouvé, grâce à l'excellent bouquin de Stephen Bullen et John Green. Merci à eux.
Chez moi ça marche, en tout cas.

Voici la marche à suivre :

1) Créer un module de Classe : Insertion / Module de Classe

2) Lui donner un nom : Sélectionner le module de Classe Classe1 qui vient d'être créé, afficher la fenêtre Propriétés et modifier le champ (name). Je l'ai appelé CSysInfo.

3) Placer dans ce module le code suivant :
Private Declare Function GetComputerName Lib "kernel32" _
  Alias "GetComputerNameA" ( _
  ByVal lbbuffer As String, _
  nsize As Long) As Long
  
Public Property Get ComputerName() As String
  Dim stBuff      As String * 255
  Dim lAPIResult  As Long
  Dim lBuffLen    As Long
  
  lBuffLen = 255
  lAPIResult = GetComputerName(stBuff, lBuffLen)
  If lBuffLen > 0 Then ComputerName = Left(stBuff, lBuffLen)
  
End Property

4) On peut ensuite utiliser la nouvelle fonctionnalité dans une macro "normale", de la façon suivante :
Dim obSysInfo As New CSysInfo
NomOrdi = obSysInfo.ComputerName

Essaie et dis-moi si ça marche.
Ajx.
0
Merci Armojax pour ta réponse.
J'ai implémenté cette procédure dans mes macros et ça marche super.

Warbler
0