liberation d'un fichier ouvert sur reseau

chrisdu73

XLDnaute Occasionnel
Bonjour
Comment faire pour ouvrir un fichier sur un réseau sachant que le chemin est:
\\commun\excel\rep\xxxxxx.xls
Puis une fois ouvert dans Excel avec le code vba et traité avec une macro, je voudrais que se fichier soit enregistrer sur le répertoire de l'utilisateur (C:\Documents and Settings\Administrateur\Mes documents) pour libérer se fichier pour qu'un autre utilisateur puisse l'ouvrir a son tour via le réseau.

Merci pour votre aide
Chris
 

JNP

XLDnaute Barbatruc
Re : liberation d'un fichier ouvert sur reseau

Bonjour Chrisdu73 :),
Je ne suis pas sûr qu'on puisse ouvrir un fichier via le partage réseau directement. De plus, si le lecteur réseau est déjà connecté, tu risque un message comme quoi le serveur est déjà mappé sous un nom d'utilisateur différent... Maintenant, il y a d'autres possibilités suivant la stratégie de ton entreprise.
1) Tu veux faire ouvrir un fichier via Excel, donc il faut que l'utilisateur ouvre un premier fichier Excel... Tu lui envoie par mail, ou tu le met sur le partage commun ? Ne peut-il pas dans ces cas là ouvrir directement le fichier ?
2) Admettons que tu lui envoie par mail. Ta procédure sera à placer dans
Code:
Private Sub Workbook_Open()
de ThisWorkbook. La stratégie de l'entreprise implique-t-elle que \\commun partage \Excel est connecté sur la même lettre sur toutes les machines de l'entreprise ? Si oui, le chemin spécifié sera le même pour tout le monde et tu peux utiliser
Code:
Workbooks.Open "J:\rep\xxxxxx.xls"
Si non, il va te falloir décrire toutes les lettres possibles
Code:
Dim Chemin As String
Dim I As Integer
Dim MonFichier As Object
Set MonFichier = CreateObject("Scripting.FileSystemObject")
For I = 0 To 25
Chemin = Chr(65 + I) & ":\rep\xxxxxx.xls"
If MonFichier.FileExists(Chemin) = True Then Workbooks.Open Chemin
Next I
3) Il te reste à l'enregistrer sous et fermer le fichier de départ
Code:
Workbooks(2).SaveAs "C:\Documents and Settings\Administrateur\Mes documents"
Workbooks(2).Activate
Workbooks(1).Close (vbNo)
et voilà.
Maintenant, il faut bien que tu préviennes les utilisateurs qu'il ne faut pas qu'ils aient un fichier Excel ouvert en même temps, sinon le N° d'index ne sera plus le bon... Et il ne faut pas qu'ils aient déjà un fichier du même nom dans leur répertoire, sinon, bug... Ce qui veut dire qu'ils vont le charger une seule fois. Sinon, il va falloir ajouter quelques lignes de VBA...
Bonne journée :cool:
 

chrisdu73

XLDnaute Occasionnel
Re : liberation d'un fichier ouvert sur reseau

merci pour ta reponse claire et eclair,
mais sur le reseau tout le monde a acces au lecteur commun et il me semble que l'on puisse ouvrir sans probleme un fichier excel sans avoir de message sauf si un utilisateur la deja ouvert.
j'aurai voulu savoir si une personne qui ouvre (un fichier dans se lecteur et le traite avec une macro pour une mise en page), s'il serai possible que se fichier soit sauvegarder automatiquement dans ces documents perso de facon a liberer le fichier du lecteur commun pour qu'un autre utisateur puisse l'ouvrir a son tour ?
merci encore pour votre aide precieuse
Chris
 

JNP

XLDnaute Barbatruc
Re : liberation d'un fichier ouvert sur reseau

Re :),
Dans ce cas de figure, il te suffit de mettre dans ThisWorkbook
Code:
Private Sub Workbook_Open()
ThisWorkbook.SaveAs "C:\Documents and Settings\Administrateur\Mes documents\xxxxxx.xls"
End Sub
Si le fichier est censé être réenregistrer à chaque ouverture, tu peux mettre
Code:
Private Sub Workbook_Open()
On Error Resume Next
Kill "C:\Documents and Settings\Administrateur\Mes documents\xxxxxx.xls"
On Error Goto 0
ThisWorkbook.SaveAs "C:\Documents and Settings\Administrateur\Mes documents\xxxxxx.xls"
End Sub
Attention, j'avais oublié le nom de fichier tout à l'heure... :eek:
Bonne journée :cool:
 

JNP

XLDnaute Barbatruc
Re : liberation d'un fichier ouvert sur reseau

Bonjour Chrisdu73 :),
Quand tu dit que ça ne marche pas, à quel niveau? Un message d'erreur, un bug, rien?
Es-tu sûr du chemin?
Code:
"C:\Documents and Settings\Administrateur\Mes documents\xxxxxx.xls"
As tu les droits pour écrire dans le niveau Administrateur?
C'est pas forcément une idée qu'il te faut, mais beaucoup plus d'info pour pouvoir te conseiller.
Bonne soirée :cool:
 

JNP

XLDnaute Barbatruc
Re : liberation d'un fichier ouvert sur reseau

Bonsoir :),
J'ai testé sur mon réseau d'entreprise. Application.UserName permet de lire le nom de la session ouverte. Donc le code
Code:
Private Sub Workbook_Open()
On Error Resume Next
Kill "C:\Documents and Settings\" & Application.UserName & _
    "\Mes documents\xxxxxx.xls"
On Error GoTo 0
ThisWorkbook.SaveAs "C:\Documents and Settings\" & Application.UserName & _
    "\Mes documents\xxxxxx.xls"
End Sub
fonctionne sur le réseau. Mais sur des postes qui sont administrateur, et où les sessions ne sont pas ouvertes avec des compléments de domaines.
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 203
Membres
103 767
dernier inscrit
LEONG