Ouverture d'un fichier

D

dlxstephane

Guest
Bonjour à tous,
Dans un premier temps je suis dans un fichier nommé "test1", l'utilisateur de ce fichier peut cliquer sur un 'CommandButton' qui s'appellera 'mise à jour'.
Ce qui va occasionner l'ouverture d'un autre fichier qui est dans un répertoire réseau (nom du fichier non connu par fichier "test1") pour info dans ce répertoire réseau il n'y aura toujours qu'un seul fichier.

Mais en plus je voudrais que si le fichier est identique à celui qui est ouvert (càd pour l"exemple test1) il indique à l'utilisateur "Pas de mise à jour disponible" dans un msgbox; et s'il est différend qu'il propose de :

- telecharger la mise à jour (oui/non)

- Ouvre le fichier et l'enregistre sur le DD de l'utilisateur dans c:/travail/test/.. (et en abusant un peu si le répertoire n'existe pas le créer! - pour info c:/travail existe sur tous les postes de travail)

Affichage dans msgbox "Votre mise à jour a été enregistré dans c:travail/test).

- Ferme l'ancien fichier qui est actuellement "test1".


Je veux ajouter cette macro pour des problèmes de messagerie interne, actuellement je fais des mises à jour tous les 15 jours que j'envoie par messagerie à une quizaine de personnes. Tout va bien actuellement mes fichiers ne dépassent pas les 15 Mo, mais bientôt je vais passer à des 50 - 60 Mo et là le serveur il ne va pas aimer !!
Alors si quelqu'un pouvait m'aider ça serait vraiment très sympa.

J'ai fais des recherches sur le forum mais je n'ai pas eu quelque chose qui pouvait m'aider.

Merci,

Stéphane.


jester2.gif
 
C

Creepy

Guest
Bonsoir à toutes & tous,

Si j'ai bien compris Stéphane tu souhaites une application toute prete à l'emploi.

Sache que ce n'est pas l'esprit de ce forum. Ici c'est plutôt un lieu d'échange et d'entraide, et pas, je demande, et on me fait.

Bref cette remarque mise à part, j'ai quand même des questions qui me viennent à l'esprit. Si j'ai bien compris tu veux un bouton dans ton fichier test1, qui vérifie sur un lecteur reseau s'il y'a un fichier test1 plus recent, si oui qui le rappatrie sur le DD local et remplace l'existant.

Mes questions :
1 - Tu définis comment la version de ton fichier ? Date, Tailles, Numéro de Version ?
2 - Es-tu conscient, que pour mettre le fichier à jour, il faut que celui-ci ne soit pas utilisé sinon Windows va en interdire l'accès ? Et si tu fermes le fichier pour le mettre à jour, la macro s'arrete !
3 - Pourquoi tu ne fais pas un raccourci qui pointe sur le reseau directement sur le fichier, comme cela plus de problème de mise à jour tout le monde à la dernière version ?

Voila mes remarques

++

Creepy
 
D

dlxstephane

Guest
Bonsoir Creepy,
Et bien voilà, je me suis mal exprimé.
Je ne fais pas une mise à jour du ficher test1 par le fichier test1 (du réseau).

Mais j'ouvre le fichier (ou prend le nom du fichier) qui se trouve sur le réseau. Si le fichier se nomme pareil (ex: test1=test1) alors j'indique à l'utilisateur "pas de mise à jour" et si il est différend ce nouveau fichier je le sauvegarde sur le DD de l'utilisateur.

Donc si sur le réseau (dans un répertoire avec un seul fichier) il y a un fichier qui se nomme:
- test1 = Pas de mise à jour
- nom différend du fichier ouvert = nouveau fichier à prendre en compte.

NB: Je ne demande pas une application toute faite, dans mon premier post je parle commandbutton, msgbox,... c'était pour être le plus clair possible !! raté !!
J'aimerais savoir si c'est possible de mettre dans une variable le nom du fichier qui se trouve dans un répertoire (répertoire connu mais pas le fichier).

Enfin merci de m'avoir répondu.
Stéphane.
 
D

dlxstephane

Guest
Re bonsoir Creepy,
Je n'ai pas répondu à ta 3ème question:
"...un raccourci qui pointe sur le reseau directement sur le fichier..."

Oui biensur faire un lien sur ce fichier que j'enverrais à tous les utilisateurs est une solution.
MAIS c'est trop simple, j'ai envie de faire plus "pro" sans les compétences snif ! .
Et c'est plus sympa pour l'utilisateur. Non ?

Stéphane



jester2.gif
 
D

dlxstephane

Guest
Bonjour à toutes et à tous

En m'aidant des exemples qu'il y a sur le site de Frédéric SIGONNEAU (http://frederic.sigonneau.free.fr/) - Merci Frédéric

J'ai trouvé la solution à ma propre question. Yes !

Il y a peut-être plus simple en tout cas cela fonctionne et dire qu'il fait beau dehors !!!

Voilà si cela peut aider quelqu'un :

(En sachant que 'C:\travail\essai' est l'endroit ou se trouve la mise à jour pour moi ce sera sur un lecteur réseau et 'C:\travail\test' est l'endroit ou le fichier sera sauvegardé sur le DD de l'utilisateur.)


Sub Mise_a_jour()
Dim fso As Object, fso1 As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object
Dim nom_fichier, nom_fich As String

' Prends le nom du fichier dans le répertoire où la mise à jour se trouve
Set fso = CreateObject("Scripting.FileSystemObject")
NomDossier = "C:\travail\essai"
Set Dossier = fso.getfolder(NomDossier)

Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
nom_fichier = File.Name
Next
End If

nom_fich = ThisWorkbook.Name

' Compare les noms des fichiers
If nom_fichier = nom_fich Then
MsgBox ("Pas de mise à jour")
Else
' Ouvre le nouveau fichier
Workbooks.Open Filename:= _
"C:\travail\essai\" & nom_fichier

' Enregistre sur le DD de l'utilisateur le new fichier
' et gestion d'erreur si le répertoire n'existe pas
On Error GoTo existe

Set fso1 = CreateObject("Scripting.FileSystemObject")
fso1.copyfolder "C:\travail\essai", "C:\travail\test"
MsgBox ("La mise à jour a été enregistrée dans C:\travail\test")

With Application
.DisplayAlerts = False
End With

Windows(nom_fich).Activate
ActiveWindow.Close

End If
Exit Sub

existe:

MkDir "C:\travail\test"

Set fso1 = CreateObject("Scripting.FileSystemObject")
fso1.copyfolder "C:\travail\essai", "C:\travail\test"

MsgBox ("La mise à jour a été enregistrée dans C:\travail\test")

With Application
.DisplayAlerts = False
End With

Windows(nom_fich).Activate
ActiveWindow.Close

End Sub


Bonne continuation.


Stéphane.




clown75.gif
 

Discussions similaires

Réponses
27
Affichages
867

Statistiques des forums

Discussions
314 085
Messages
2 105 647
Membres
109 410
dernier inscrit
fwbox