Message box pour confirmer la date d'un fichier

Bonjour à tous,

Débutant en Excel VBA, j'ai un besoin un peu particulier.

J'ai un tableau composé d'une colonne "nom de fichier" et d'une autre "date de modification du fichier"

La ligne "N° de plan" pointe avec un lien hypertext vers le fichier correspondant (.tif en l’occurrence) dans un dossier Windows spécifié.

Je dois entrer manuellement la date du fichier dans la seconde colonne.

Je souhaiterais créer une macro qui vérifie que la date entrée correspond à la date de modification du fichier .tif avec des messages box qui confirme que la date est identique ou pas.

(une autre solution serait que la macro aille chercher la date du fichier et qu'elle vérifie ensuite que cette date correspond à la date du jour actuel)

Je n'ai pas créer macro encore car je ne sais pas par où commencer

J'ai cherché sur différent forum mais je n'ai pas trouvé de sujet correspondant, je sais seulement qu'il est possible d'aller chercher la propriété "date de modification" du fichier.

Merci par avance de votre aide!

Bonjour,

Ta question n'est pas très claire et pas de lien hypertexte dans ton fichier. Il est de toute façon préférable de travailler avec des chemins et noms de fichiers.

Ci-dessous une fonction qui devrait te renvoyer, en lui passant le chemin et le nom du fichier, la date de modification sous forme de chaîne jj/mm/aaaa hh:mm. A toi de traiter ce résultat pour en extraire la date à la comparer à la date du jour...

Function DModif(ByVal ChDos, ByVal Fimg)
    Dim shApp As Object, fld As Object, Fich As Object
    Set shApp = CreateObject("Shell.Application")
    Set fld = shApp.Namespace(ChDos)
    Set Fich = fld.items.Item(Fimg)
    DModif = fld.getdetailsof(Fich, 4)
End Function

Cordialement.

edit: sous réserve que l'index de la propriété soit valide pour ton OS. 4 est valide pour Win7, et en principe cette propriété n'a guère dû subir de variation depuis l'origine... mais le cas échéant on pourra lister les propriétés pour repérer son index.

Merci de ta réponse

En effet le lien n'est pas crée dans mon fichier mais je ne pense pas qu'il soit utile pour ce code.

Je vais essayer de simplifier ma demande en décrivant la question :

Est-ce que la date de la cellule est égale à la date de modification du fichier :

  • Enregistré dans un chemin définie (Ex : C:\Users\Public\Pictures)
  • Et dont le nom est la valeur de la 1ère cellule de la ligne correspondante

+ Message box ou dire oui c'est bien la même date ou pas.

Merci pour ta macro, mais je suis tout jeune dans vba et j'avoue que je ne la comprend pas trop...

(pour l'OS je suis bien sous Windows 7)

Re,

Tes propos sont contradictoires : on ne sait plus si tu veux comparer la date de modification à la date que tu inscris ou à la date du jour... Le mieux à mon avis est de ne pas inscrire de date et d'aller chercher la date de modification.

Ce que tu peux essayer :

Const ChDos As String = "C:\Users\Public\Pictures"

Function DModif(ByVal ChDos, ByVal Fimg)
    Dim shApp As Object, fld As Object, Fich As Object
    Set shApp = CreateObject("Shell.Application")
    Set fld = shApp.Namespace(ChDos)
    Set Fich = fld.items.Item(Fimg)
    DModif = fld.getdetailsof(Fich, 4)
End Function

Sub Test()
    Dim dm$, nFich$, i%
    With ActiveSheet.ListObjects(1).DataBodyRange
        For i = 1 To .Rows.Count
            nFich = .Cells(i, 1) & ".tif"
            dm = DModif(ChDos, nFich)
            .Cells(i, 2) = CDate(Split(dm)(0))
            '???
        Next i
    End With
End Sub

Déclarer le chemin du dossier (s'il est bien commun à tous les fichiers) comme constante au niveau module.

Y placer la fonction renvoyant la date de modif. (NB- dans un module, on place toujours : les options et déclarations de niveau module, les procédures Function, les procédures Sub, dans cet ordre (c'est une règle conventionnelle de programmation mais qui répond à des justification qui ne sont pas que conventionnelles !)]

Et l'utiliser dans une procédure pour parcourir ton tableau...

(NB- Lorsqu'on prend la peine de placer un tableau Excel, autant utiliser ce tableau plutôt que coder en le considérant comme plage ordinaire dans la feuille !)

... et y placer la date de modification dans la 2e colonne (extraite en splittant la chaîne pour en recueillir la partie date, sans oublier de la convertir en date en l'affectant).

Ensuite moi je ne sais ce que tu veux tester à partir de là ?

Cordialement.

Pardon si mes explications sont confuses (c'est déjà pas clair pour moi )

Je souhaite vérifier que la date entrée manuellement dans la cellule corresponde à la date de modification du fichier. (pas la date du jour)

J'avoue je suis perdu dans ton code

je comprend le principe mais dans le détail c'est un level +++ pour mon niveau

Je vais me permettre de faire comme pour mon autre sujet où tu a répondu en joignant le tableau desitné à recevoir cette macro

Si cela ne te gène pas, peux tu le regarder et adapter le code en conséquence?

Je souhaiterais vérifier que les dates entrées dans la colonne "tif archivage" (11/10/2018 pour chaque ligne) soit identique à celle du fichier tif du même nom.

Et petite difficulté supplémentaire, il faut que de soit uniquement vérifié sur les lignes affichées...

Rechercher des sujets similaires à "message box confirmer date fichier"