Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recuperer infos d'un fichier sans l'ouvrir

32 réponses
Avatar
magic-dd
bonsoir

j'essaye par une macro dans mon fichier r=E9capitulatif r=E9cup=E9rer les i=
nfos d'enregistrement d'un autre classeur sans que celui ci s'ouvre

le chemin de celui ci est dans mon fichier en cellule A5



or il s'ouvre :)

voici ma procedure

Sub modif()
'ouverture du fichier concern=E9
=20

Dim cl As String
cl =3D [a5].Value
Workbooks.Open (cl) ' =E0 adapter
With ThisWorkbook

MsgBox "auteur: " & .BuiltinDocumentProperties("Author") & vbLf & _
"le: " & .BuiltinDocumentProperties("creation date") & vbLf=
& _
"dernier enregistrement le " & .BuiltinDocumentProperties("=
last save time") & vbLf & _
" par: " & .BuiltinDocumentProperties("last author")


ThisWorkbook.Close
End With
=20
=20
End Sub
=20

comment faire pour que celui ci reste bien sagement ferm=E9

10 réponses

1 2 3 4
Avatar
Jacky
Bonsoir,

Je n'ai peut-être pas tout compris,
mais s'il s"agit uniquement de retourner la date et l'heure de la dernière sauvegarde des classeurs dont le
nom complet se trouve en "a5:a32", ceci devrait être suffisant (sans ouverture)
'---------------
Sub jj()
Dim Fichier As String
For i = 5 To 32
If Range("a" & i).Value <> "" Then
Fichier = Range("a" & i).Value
If Dir(Fichier) <> "" Then Range("g" & i).Value = FileDateTime(Fichier)
End If
Next
End Sub
'----------------

--
Salutations
JJ


"magic-dd" a écrit dans le message de news:

Je vais essayer des ludi matin en esperant que cela fonctionne car c'est sur un serveur collaboratif.

je te tiens au courant de tout ca, vais quand meme pas aller au bureau demain ;)

merci encore

et bon week end


Le vendredi 14 décembre 2012 19:40:42 UTC+1, MichD a écrit :
Si ton classeur est protégé par des commandes situées à l'intérieur

du classeur ou si les feuilles sont protégées, cette procédure devrait

s'exécuter normalement.
Avatar
magic-dd
Bonjour

en effet jacky, je veux juste connaitre la date et heure de derniere sauveg arde des classeurs qui se trouvent

Le vendredi 14 décembre 2012 23:19:22 UTC+1, Jacky a écrit :
Bonsoir,



Je n'ai peut-être pas tout compris,

mais s'il s"agit uniquement de retourner la date et l'heure de la derni ère sauvegarde des classeurs



je teste toutes les solutions lundi au bureau

merci et bon w end

nom complet se trouve en "a5:a32", ceci devrait être suffisant (sans ou verture)

'---------------

Sub jj()

Dim Fichier As String

For i = 5 To 32

If Range("a" & i).Value <> "" Then

Fichier = Range("a" & i).Value

If Dir(Fichier) <> "" Then Range("g" & i).Value = FileDateTime( Fichier)

End If

Next

End Sub

'----------------



--

Salutations

JJ





"magic-dd" a écrit dans le message de news:



Je vais essayer des ludi matin en esperant que cela fonctionne car c'est sur un serveur collaboratif.



je te tiens au courant de tout ca, vais quand meme pas aller au bureau de main ;)



merci encore



et bon week end





Le vendredi 14 décembre 2012 19:40:42 UTC+1, MichD a écrit :

> Si ton classeur est protégé par des commandes situées à l'int érieur

>

> du classeur ou si les feuilles sont protégées, cette procédure de vrait

>

> s'exécuter normalement.
Avatar
Jacky
Re..
Plus court..;o))
'----------
Sub jj()
For i = 5 To 32
On Error Resume Next
Range("g" & i) = FileDateTime(Range("a" & i).Value)
On Error GoTo 0
Next
End Sub
'-----------

--
Salutations
JJ


"magic-dd" a écrit dans le message de news:

Bonjour

en effet jacky, je veux juste connaitre la date et heure de derniere sauvegarde des classeurs qui se trouvent
Avatar
MichD
Ta question initiale faisait référence à ceci:

| fichier récapitulatif récupérer les infos d'enregistrement d'un autre
classeur

Et dans l'exemple que tu donnais, tu voulais obtenir le nom de l'auteur du
fichier!

| MsgBox "auteur: " & .BuiltinDocumentProperties("Author") & vbLf & _
"le: " & .BuiltinDocumentProperties("creation date") & vbLf
& _
"dernier enregistrement le " &
.BuiltinDocumentProperties("last save time") & vbLf & _
" par: " & .BuiltinDocumentProperties("last author")

Quand on pose une question, il faut quand même savoir ce que l'on désire
obtenir comme résultat.
En passant, FileDateTime(Fichier) est une méthode qui relève de la
bibliothèque VBA.
La syntaxe complète est : VBA.FileDateTime(Fichier)




MichD
---------------------------------------------------------------
Avatar
magic-dd
bonjour MichD

méa culpa sur ma demande

mais j'y ai quand meme beaucoup appris

je vais faire attention à mes demandes dorénavant. cela est tres constr uctif.

la syntaxe finale peut donc se lire

'----------
Sub jj()
For i = 5 To 32
On Error Resume Next
Range("g" & i) = VBA.FileDateTime(Range("a" & i).Value)
On Error GoTo 0
Next
End Sub
'-----------



Le samedi 15 décembre 2012 12:41:29 UTC+1, MichD a écrit :
Ta question initiale faisait référence à ceci:



| fichier récapitulatif récupérer les infos d'enregistrement d'un a utre

classeur



Et dans l'exemple que tu donnais, tu voulais obtenir le nom de l'auteur d u

fichier!



| MsgBox "auteur: " & .BuiltinDocumentProperties("Author") & vbLf & _

"le: " & .BuiltinDocumentProperties("creation date") & vb Lf

& _

"dernier enregistrement le " &

.BuiltinDocumentProperties("last save time") & vbLf & _

" par: " & .BuiltinDocumentProperties("last author")



Quand on pose une question, il faut quand même savoir ce que l'on dés ire

obtenir comme résultat.

En passant, FileDateTime(Fichier) est une méthode qui relève de la

bibliothèque VBA.

La syntaxe complète est : VBA.FileDateTime(Fichier)









MichD

---------------------------------------------------------------
Avatar
magic-dd
bonsoir

donc voila le compte rendu

la solution finale adoptée est celle ci

Sub test()
Dim Fichier As String, X As Workbook, FileName As String
Application.EnableEvents = False
For i = 5 To 32

on error resume next

FileName = Range("a" & i).Value

Set X = GetObject(FileName)
Fichier = Mid(FileName, InStrRev(FileName, "") + 1, 100)

Range("g" & i).Value = X.BuiltinDocumentProperties("last save
time").Value

X.Close savechages = False

Set X = Nothing

Next i

Application.EnableEvents = True

End Sub

sauf que la boucle est tres lente car elle ouvre le fichier pour prendre l' info puis le referme

ceci dit merci encore à vous tous
Avatar
MichD
J'espère que tu n'as pas retenu cette version simplement pour me faire
plaisir!

;-))

Merci du retour.


MichD
---------------------------------------------------------------
Avatar
magic-dd
absolument pas MichD

car ta version fonctionne tres bien.

le seul truc est que l'on voit s'ouvrir puis fermer chaque classeur donc c' est un peu long quand on l'adapte à un dossier contenant une centaine de classeurs
Avatar
MichD
| le seul truc est que l'on voit s'ouvrir puis fermer chaque classeur
| donc c'est un peu long quand on l'adapte à un dossier contenant
| une centaine de classeurs

Quelle est ta version d'Excel? Moi, je ne vois aucun fichier s'ouvrir ou
se fermer. On peut observer cependant un message dans la barre d'état
(StatusBar). Si tu le désires, il est possible de masquer cette
barre d'état pendant l'exécution de la macro.

'---------------------------------------------------
Sub test()
Dim Fichier As String, X As Workbook, FileName As String
Dim i As Integer, Nb As Long

Application.DisplayStatusBar = False
With Worksheets("Feuil1") 'Nom feuille à adapter
Nb = .Range("a65536").End(xlUp).Row
For i = 5 To Nb
FileName = .Range("a" & i).Value
If Dir(FileName) <> "" Then
Set X = GetObject(FileName)
Fichier = Mid(FileName, InStrRev(FileName, "") + 1, 100)
.Range("g" & i).Value = X.BuiltinDocumentProperties("last save Time").Value
X.Close savechages = False
Set X = Nothing
Else
Message = Message & .Range("A" & i).Value & vbCrLf
End If
Next i
End With
Application.StatusBar = ""
Application.DisplayStatusBar = True

If Message <> "" Then
MsgBox "Ces fichiers n'ont pas été trouvés." & _
vbCrLf & vbCrLf & Message
End If
End Sub
'---------------------------------------------------


MichD
--------------------------------------------------------------
Avatar
magic-dd
Bonsoir

quand je dis que je vois s'ouvrir le fichier c'est lorsque je reste sur ma page vba.

je vois sur le cote gauche defiler les classeurs au fur et à mesure.

à savoir mes classeur sont sur un réseau local et non sur mon propre pc .

peut etre que cette latence est due à cela.

je vais essayer de faire avec ton nouveau code

oups j'avais oubliéé, je suis encore sous excel 2003 mais d'ici 2-3 moi s je passe sous 2010.

je vais donc souvent venir car pour les compatibilité je vais me tirer le s cheveux.

encore une fois merci pour l'aide et le suivi du dossier

Loic

Le mardi 18 décembre 2012 12:10:59 UTC+1, MichD a écrit :
| le seul truc est que l'on voit s'ouvrir puis fermer chaque classeur

| donc c'est un peu long quand on l'adapte à un dossier contenant

| une centaine de classeurs



Quelle est ta version d'Excel? Moi, je ne vois aucun fichier s'ouvrir ou

se fermer. On peut observer cependant un message dans la barre d'état

(StatusBar). Si tu le désires, il est possible de masquer cette

barre d'état pendant l'exécution de la macro.



'---------------------------------------------------

Sub test()

Dim Fichier As String, X As Workbook, FileName As String

Dim i As Integer, Nb As Long



Application.DisplayStatusBar = False

With Worksheets("Feuil1") 'Nom feuille à adapter

Nb = .Range("a65536").End(xlUp).Row

For i = 5 To Nb

FileName = .Range("a" & i).Value

If Dir(FileName) <> "" Then

Set X = GetObject(FileName)

Fichier = Mid(FileName, InStrRev(FileName, "") + 1, 100)

.Range("g" & i).Value = X.BuiltinDocumentProperties("last s ave Time").Value

X.Close savechages = False

Set X = Nothing

Else

Message = Message & .Range("A" & i).Value & vbCrLf

End If

Next i

End With

Application.StatusBar = ""

Application.DisplayStatusBar = True



If Message <> "" Then

MsgBox "Ces fichiers n'ont pas été trouvés." & _

vbCrLf & vbCrLf & Message

End If

End Sub

'---------------------------------------------------





MichD

--------------------------------------------------------------
1 2 3 4