Macro Excel et réseau
Warbler
-
Warbler -
Warbler -
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
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
A voir également:
- Macro Excel et réseau
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et ou excel - Guide
- Entrer les informations d'identification reseau - Guide
4 réponses
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 ???
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 ???
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.
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.
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
ç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
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...
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...
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 :
4) On peut ensuite utiliser la nouvelle fonctionnalité dans une macro "normale", de la façon suivante :
Essaie et dis-moi si ça marche.
Ajx.
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.
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