Date de modification fichier sur réseau

Signaler
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
-
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
-
Bonjour,
Voilà, je suis confrontée à un problème (et c'est pour ça que je suis là).
J'aimerai récupérer la date de modification d'un fichier qui se trouve sur une team place (lien hypertext https://...).
Je suis capable d'ouvrir le fichier par un code vba, mais pas de récupérer sa date de modification.
J'ai trouvé une fonction qui marche (mais malheureusement pas pour un fichier sur TP)

Dim ModifDate
ModifDate = FileDateTime(chemin)
MsgBox ("dernière modif à" & ModifDate)

Y a t'il une solution ?

Merci d'avance !
Hélène

19 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
renseigne toi sur les fonction fso
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Effectivement, c'est une solution que j'ai trouvé sur Internet grâce à ton aide, mais je ne comprend pas trop. J'ai inséré le code suivant dans mon code :

Dim fso, f_file
Set fso = CreateObject("Scripting.FileSystemObject")
Set f_file = fso.GetFile(chemin)
ShowFileInfo = "Fichier Modifié: " & f_file.DateLastModified

Mais en regardant la valeur de showfileInfo, je me rends compte que c'est vide...

J'avoue que je suis débutante et je ne comprends pas trop comment marche fso...
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Teste ça et redis moi
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = "c:\tmp\Nouveau Document texte.txt"
If oFSO.FileExists(stFichier) Then

"DateLastModified :" & oFSO.DateLastModified & vbCrlf
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Teste ça et redis moi
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = "c:\tmp\Nouveau Document texte.txt"
If oFSO.FileExists(stFichier) Then

"DateLastModified :" & oFSO.DateLastModified & vbCrlf

Merci, mais je ne comprends pas trop le code en fait, donc j'ai copié_collé bêtement (je sais que ce n'est pas bien )... Et rien ne se passe.
Pour info, si je n'avais pas été claire avant, je veux récupérer la date de modification d'un fichier excel qui se trouve sur une TeamPlace (ou SharePoint).
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Là tu ne devrais plus avoir de soucis

Dim fso As FileSystemObject, f As File

Set fso = New FileSystemObject

On Error GoTo fin
Set f = fso.GetFile([Le fichier que tu veux])
MsgBox "Crée le : " & f.DateCreated
MsgBox "Modifié le : " & f.DateLastModified
MsgBox "Accédé le : " & f.DateLastAccessed
Set f = Nothing
Exit Sub
fin:
Set fso = Nothing


entre les [] tu mets le path que tu veux.
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Là tu ne devrais plus avoir de soucis

Dim fso As FileSystemObject, f As File

Set fso = New FileSystemObject

On Error GoTo fin
Set f = fso.GetFile([Le fichier que tu veux])
MsgBox "Crée le : " & f.DateCreated
MsgBox "Modifié le : " & f.DateLastModified
MsgBox "Accédé le : " & f.DateLastAccessed
Set f = Nothing
Exit Sub
fin:
Set fso = Nothing


entre les [] tu mets le path que tu veux.


j'ai une erreur de compilation pour FileSystemObject : "Type defini par l'utilisateur non defini".
Peut-être y a t'il une bibiliothèque à mettre en référence ?

En tout cas, merci beaucoup pour ton aide 4u4me4us !
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
A oui c vrai !!! fais ce qui suit

Clique sur Projet -> Reference
Trouve et coche Microsoft Scripting Runtime
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

A oui c vrai !!! fais ce qui suit

Clique sur Projet -> Reference
Trouve et coche Microsoft Scripting Runtime




Merci 4u4me4us.
Effectivement, je n'ai plus d'erreur de compilation, mais ça ne marche toujours pas avec mon fichier sur Share Point, mais ça marche quand même pour les fichiers enregistrés sur DD.

Bon, je commence à fortement douter qu'il soit possible de trouver une solution à mon problème (sans en être très étonnée). Peut-être est-ce possible lorsque le fichier est ouvert ?
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Je peut avoir l'url pour tester
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Pas possible, l'accès à ce fichier est limité...
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Il faut que tu envisage les scripte FTP ou HTTP
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Ok je vais me renseigner. Merci pour le conseil !
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

4u4me4us,
Voilà, je me repenche sur le sujet, et essaie donc de comprendre le message codé que tu m'as donné en aide (oui je n'y connais pas grand chose...)
Il faut que tu envisage les scripte FTP ou HTTP


Est-ce que tu veux dire que VBA ne peut pas m'aider sur ce problème et que je dois m'aider d'une requête HTTP ? (HTTP et HTTPS : même méthode ou il y a un problème de plus quand c'est sécurisé, car le lien commence par https ?)

Merci d'avance !
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Dans un de t précédant message tu disais "Je suis capable d'ouvrir le fichier par un code vba, mais pas de récupérer sa date de modification.".

Derrière ton url y a t'il un serveur FTP?
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

En fait, j'imagine qu'on utilise un serveur http, vu que mon adresse commence par https://teamplace.
TeamPlace, c'est l'outil SharePoint de Microsoft, et apparemment il utilise 3 principaux protocoles de transfert, dont http (http://www.doxtop.com/browse/b5993a5d/sharepoint-ports-protocols-and-proxies.aspx, diapo 8 et suivantes...)
Je ne sais pas si ça peut aider, en tout cas, je cale complètement !
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu dis "apparemment il utilise 3 principaux protocoles de transfert". regarde si dans les 3 y a le FTP (https://www etc n'exclut pas le FTP). Car par FTP tu as le commande "LIST" qui te donne les nom de tout les fichier et la date de leur dèr. modification.

Si non il faut que tu trouve un équivalant par http mais moi je ne le connais pas.
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Donc les 3 principaux protocoles de transfert sont :
[list]
SQL server tabular data stream (TDS)
Server Message Block (SMB)
et HTTP
/list

Mais comment je peux savoir quel protocole est utilisé ?
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu peux poster le code qui te permet d’ouvrir le fichier. Tu supprimer tout ce qui est Password et User bref compromettant.
Là je ne vois plus vraiment comment je pourrais t'aider mais parfois avec une base de réflexion je peut trouvé
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

Voilà le code.
Le problème au sujet date de modif est au début.
J'ai aussi mis la partie de code qui ouvre le fichier dans la procédure suivante (qui marche), peut être que ça peut te donner une idée...
Const chemin_fichier1 = "https://teamplace.v[...]"

Function calcul_chemin(chemin1, chemin2 As String, annee As Variant, date_f As Variant) As String
    calcul_chemin = chemin1 + annee + chemin2 + date_f + ".xls"
End Function



Sub dispo_RTI()
    


Dim d As Variant
Dim d_u As Variant
Dim date_update As Date

Dim fso As FileSystemObject, f As File

Set fso = New FileSystemObject
'#######################Problème ici######################################
On Error GoTo final
Set f = fso.GetFile("https://teamplace.v[...].xls")
MsgBox "Crée le : " & f.DateCreated
MsgBox "Modifié le : " & f.DateLastModified
MsgBox "Accédé le : " & f.DateLastAccessed
Set f = Nothing
Exit Sub
final:
Set fso = Nothing



        
End Sub
Sub activer_file_CTAR(dispo_ctar, nblignes_ctar, qs_ctar, fact_ctar, objQS_ctar, objfact_CTAR As Variant)

Dim chemin_fichier As String
Dim chemin_fichier2 As String
Dim mois As Variant
Dim annee As Variant
Dim date_fichier As Variant


' "https://teamplace.v[...].xls"
mois = Month(DateValue(Now))
annee = CStr(Year(DateValue(Now)))
date_fichier = CStr(mois) + "-" + annee
chemin_fichier = chemin_fichier1 + annee + chemin_fichier2 + date_fichier + ".xls"

Dim wb As Workbook
Dim ws As Worksheet

i = 0

On Error Resume Next
Do
'OUverture jusqu'à ce qu'il n'y ait plus d'erreurs
    Err.Clear
    Application.DisplayAlerts = False                               'N'affiche pas de message d'erreur dans le cas où le fichier n'existe pas

i = i + 1

mois mois - 1                            'On décrémente le num du mois (1er passage> fichier inexistant, passages suivants => mois précédent
If mois = 0 Then                           'Cas du passage à l'année précédente
    mois = 12
    annee = annee - 1
End If

If mois < 10 Then
   date_fichier = "0" + CStr(mois) + "-" + annee
   Else
       date_fichier = CStr(mois) + "-" + annee
End If

chemin_fichier = calcul_chemin(chemin_fichier1, chemin_fichier2, annee, date_fichier)

Dim nom_feuille As Variant
'le nom de la feuille varie selon la date
nom_feuille = "Q.S International " + Left(MonthName(mois), 3) + ". CTAR"

'Tentative d'ouverture, updateLinks => mise à jour automatique, pas d'affichage de boîte de dialogue,
' ReadOnly : on travaille forcément en mode Lecture seulement,pas d'affichage de boîte de dialogue
Set wb Workbooks.Open(chemin_fichier, UpdateLinks 3, ReadOnly = True)
Set ws = wb.Worksheets(nom_feuille)

'"""""""""""""""Ouverture OK !!!!

'Qd pas d'erreur, cad fichier qui s'ouvre, donc existe, on travaille sur le fichier ouvert
Loop While (Err.Number <> 0) Or (i = 4)
If i = 4 Then
    MsgBox ("Pas de fichier trouvé pour le CTAR")
    GoTo fin
End If

Application.DisplayAlerts = True 'Rétablit l'affichage des messages d'erreurs

dispo_ctar = ws.Cells(5 + mois, 4).Value
nblignes_ctar = ws.Cells(5 + mois, 2).Value
qs_ctar = ws.Cells(5 + mois, 6).Value
fact_ctar = ws.Cells(5 + mois, 8).Value

Set ws = wb.Worksheets("Suivi annuel par Zones Com.")
    objQS_ctar = ws.Range("d3")
    objfact_CTAR = ws.Range("f3")
    

'Dim ModifDate
'    ModifDate = FileDateTime()
'    MsgBox ("dernière modif à" & ModifDate)
    
' le fichier se trouve à l'emplacement suivant : moncheminUserByRoleList.XML


'' on créé une référence au fichier userbyrolelist.txt dérivé du fichier userbyrolelist.xml fourni par le système technique xx
'Set f_source = fso_filesystem.OpenTextFile(chemin, ForReading, False)
'
''---------------------------------------------------------------------------
''----- Récupération de la date de modification du fichier XML---------------
''---------------------------------------------------------------------------
'
'Dim fso, f_file
'Set fso = CreateObject("Scripting.FileSystemObject")
'Set f_file = fso.GetFile("https://teamplace.v[...].xls")
'ShowFileInfo = "Fichier Modifié: " & f_file.DateLastModified

'Set oFSO = CreateObject("Scripting.FileSystemObject")
'stFichier = "c:\tmp\Nouveau Document texte.txt"
'If oFSO.FileExists(stFichier) Then
'    MsgBox ("DateLastModified :" & oFSO.DateLastModified & vbCrLf)
'End If
'
'last one


'####################Problème ici########################
Dim fso As FileSystemObject, f As File

Set fso = New FileSystemObject

On Error GoTo final
Set f = fso.GetFile("https://teamplace.v[...].xls")
MsgBox "Crée le : " & f.DateCreated
MsgBox "Modifié le : " & f.DateLastModified
MsgBox "Accédé le : " & f.DateLastAccessed
Set f = Nothing
Exit Sub
final:
Set fso = Nothing

wb.Close
fin:
End Sub