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

Date modifiée

10 réponses
Avatar
rmill...
Bonjour,

Dans un dossier j'ai le besoin de classer des documents de types Excel, Word et PDF principalement par date de modification. format date-heure-seconde.

Est-il possible de modifier cette info sans ouvrir et enregistrer le fichier?

Par exemple dans un dossier j'ai plusieurs documents. Je souhaite copier que certains un Í  la fois et dans un ordre bien précis dans un autre dossier et ensuite les classer selon le moment que je les ai copié dans l'autre dossier.

Y aurait-il une façon de faire avec du code?

Merci Í  l'avance.

10 réponses

Avatar
MichD
Le 06/02/22 Í  06:37, a écrit :
Bonjour,
Dans un dossier j'ai le besoin de classer des documents de types Excel, Word et PDF principalement par date de modification. format date-heure-seconde.
Est-il possible de modifier cette info sans ouvrir et enregistrer le fichier?
Par exemple dans un dossier j'ai plusieurs documents. Je souhaite copier que certains un Í  la fois et dans un ordre bien précis dans un autre dossier et ensuite les classer selon le moment que je les ai copié dans l'autre dossier.
Y aurait-il une façon de faire avec du code?
Merci Í  l'avance.

Bonjour,
Peu importe ce que tu veux modifier dans un classeur, tu dois l'ouvrir...
Une manière simple de regrouper tes classeurs:
Dans la fenêtre VBA, barre des menus / outils / références
coche la référence suivante : "Microsoft Scripting RunTime
La macro traite tous les fichiers contenus dans le répertoire.
Word, Excel...etc.
'--------------------------
Sub ShowFileAccessInfo()
Dim Chemin As String
Dim X As Long, A As Long
Dim FS As FileSystemObject
Dim F As Scripting.File
Dim R As Scripting.Folder
Chemin = "F:Téléchargements" 'Í  adapte selon ton environnement
Set FS = CreateObject("Scripting.FileSystemObject")
Set R = FS.GetFolder(Chemin)
X = R.Files.Count
For A = 1 To X
Set F = R.Files(A)
'Si tu préfères des mois, change D pour M ou Y pour année
Select Case DateDiff("d", F.DateLastAccessed, Now)
Case Is < 30 'jours
F.Move "c:répertoireDésiré" 'Í  adapter
Case Is < 60 'jour
F.Move "c:AutreRépertoire" 'Í  adapter
'Tu peux ajouter autant de case que tu désires.
'30 et 60 jours ne sont qu'un exemple.
End Select
Next
End Sub
'--------------------------
L'autre manière de procéder tu ouvres tous les classeurs, tu modifies
par exemple la date de la création par exemple et tu enregistres le
fichier, le fermes et le déplaces vers le répertoire de destination.
'--------------------------
Sub test()
Dim Wk As Workbook
Dim Répertoire As String, Fichier As String
Dim Destination As String
Destination = "F:Téléchargementstest"
Répertoire = "F:Téléchargements"
Fichier = Dir(Répertoire & "*.xl*")
Do While Fichier <> ""
Set Wk = Workbooks.Open(Répertoire & Fichier)
'tu peux utiliser l'une de ces 3 propriétés
'Last Print Date, Creation Date ,Last Save Time
Wk.BuiltinDocumentProperties("Last Save Time") = Format(Date,
"DD-MM-YYYY H:MM:SS")
Wk.Close True
Name Répertoire & Fichier As Destination & Chemin & Fichier
Fichier = Dir()
Loop
End Sub
'--------------------------
MichD
Avatar
MichD
Le 06/02/22 Í  17:14, MichD a écrit :
Le 06/02/22 Í  06:37, a écrit :
Bonjour,
Dans un dossier j'ai le besoin de classer des documents de types
Excel, Word et PDF principalement par date de modification. format
date-heure-seconde.
Est-il possible de modifier cette info sans ouvrir et enregistrer le
fichier?
Par exemple dans un dossier j'ai plusieurs documents. Je souhaite
copier que certains un Í  la fois et dans un ordre bien précis dans un
autre dossier et ensuite les classer selon le moment que je les ai
copié dans l'autre dossier.
Y aurait-il une façon de faire avec du code?
Merci Í  l'avance.

Bonjour,
Peu importe ce que tu veux modifier dans un classeur, tu dois l'ouvrir...
Une manière simple de regrouper tes classeurs:
Dans la fenêtre VBA, barre des menus / outils / références
coche la référence suivante : "Microsoft Scripting RunTime
La macro traite tous les fichiers contenus dans le répertoire.
Word, Excel...etc.
'--------------------------
Sub ShowFileAccessInfo()
    Dim Chemin As String
    Dim X As Long, A As Long
    Dim FS As FileSystemObject
    Dim F As Scripting.File
    Dim R As Scripting.Folder
    Chemin = "F:Téléchargements" 'Í  adapte selon ton environnement
    Set FS = CreateObject("Scripting.FileSystemObject")
    Set R = FS.GetFolder(Chemin)
    X = R.Files.Count
    For A = 1 To X
        Set F = R.Files(A)
    'Si tu préfères des mois, change D pour M ou Y pour année
        Select Case DateDiff("d", F.DateLastAccessed, Now)
            Case Is < 30 'jours
                F.Move "c:répertoireDésiré" 'Í  adapter
            Case Is < 60 'jour
                F.Move "c:AutreRépertoire"  'Í  adapter
            'Tu peux ajouter autant de case que tu désires.
            '30 et 60 jours ne sont qu'un exemple.
        End Select
    Next
End Sub
'--------------------------
L'autre manière de procéder tu ouvres tous les classeurs, tu modifies
par exemple la date de la création par exemple et tu enregistres le
fichier, le fermes et le déplaces vers le répertoire de destination.
'--------------------------
Sub test()
Dim Wk As Workbook
Dim Répertoire As String, Fichier As String
Dim Destination As String
Destination = "F:Téléchargementstest"
Répertoire = "F:Téléchargements"
Fichier = Dir(Répertoire & "*.xl*")
Do While Fichier <> ""
    Set Wk = Workbooks.Open(Répertoire & Fichier)
    'tu peux utiliser l'une de ces 3 propriétés
    'Last Print Date, Creation Date ,Last Save Time
    Wk.BuiltinDocumentProperties("Last Save Time") = Format(Date,
"DD-MM-YYYY H:MM:SS")
    Wk.Close True
    Name Répertoire & Fichier As Destination & Chemin & Fichier
    Fichier = Dir()
Loop
End Sub
'--------------------------
MichD

Pour le Select Case, il faut débuter par les plus anciens aux plus récents.
Select case X
case is > 10 'ans
Case is > 5 'ans
Case is > 1 'an
Case else
'pour tous les autres
End Select
MichD
Avatar
rmill...
Merci beaucoup. Je vais pouvoir adapter.
Je comprends alors qu'il faut absolument ouvrir le fichier quel qu'il soit.
Avatar
rmill...
Bonjour Í  nouveau.
Sauriez-vous pourquoi If Dir("C:Nouveau dossierccc.pdf") <> "" Then ... retourne false ,,, bref pour tous les fichier .pdf. Pour les autres c'est OK.
Avatar
MichD
Le 06/02/22 Í  22:59, a écrit :
Bonjour Í  nouveau.
Sauriez-vous pourquoi If Dir("C:Nouveau dossierccc.pdf") <> "" Then ... retourne false ,,, bref pour tous les fichier .pdf. Pour les autres c'est OK.

Bonjour,
Il n'y a aucune raison si :
Ce chemin existe bel et bien : C:Nouveau dossier
Que ce fichier existe dans ce répertoire: ccc.pdf
Si tu veux boucler sur tous les fichiers PDF il faut écrire :
If Dir("C:Nouveau dossier" & "*.pdf") <> "" Then
Utilise le joker "*" qui signifie tous les fichiers, peu importe leur
nom ayant l'extension recherchée ".pdf".
Faire attention aux fautes d'orthographe!
MichD
Avatar
MichD
Le 07/02/22 Í  05:53, MichD a écrit :
If Dir("C:Nouveau dossier" & "*.pdf") <> "" Then

Tu peux utiliser cette syntaxe :
If Dir("C:Nouveau dossier*.pdf") <> "" Then
Moi, j'ai l'habitude d'utiliser une variable pour signifier le chemin
des fichiers Í  utiliser...
MichD
Avatar
rmill...
Merci. Je comprends.
Mais il doit y avoir quelque chose de pas fonctionnel ou un mauvais paramètres Í  quelque part car rien Í  faire ... pour un fichier .pdf ... ça retourne Faux ... même avec des variables. je ne comprends pas.
J'ai bien mon logiciel Nitro établi comme appli par défaut dans Windows ... des imprimantes pdf etc.
Avatar
MichD
Le 07/02/22 Í  09:11, a écrit :
Merci. Je comprends.
Mais il doit y avoir quelque chose de pas fonctionnel ou un mauvais paramètres Í  quelque part car rien Í  faire ... pour un fichier .pdf ... ça retourne Faux ... même avec des variables. je ne comprends pas.
J'ai bien mon logiciel Nitro établi comme appli par défaut dans Windows ... des imprimantes pdf etc.

On s'entend, tu parles de fichier ".pdf" standard.
Moi, les lignes de code que je t'ai données fonctionnent parfaitement.
Cela devrait fonctionner pour tous les types de fichiers.
Des applications ou des imprimantes ne sont pas des fichiers.
MichD
Avatar
Geo
De MichD, le 07/02/2022 :
Cela devrait fonctionner pour tous les types de fichiers.

Une chose Í  vérifier, ce serait de voir si le fichier n'est pas en
lecture seule ou caché.
Dans ce cas, il me semble qu'il faut mettre le 2_ème paramètre.
Avatar
rmill...
OK merci beaucoup.