Comment marche VBA

Résolu
Bonjour,
Comment fait-on pour que dans une cellule d'excel s'affiche la date de modification du classeur. J'ai vu qu'il fallait mettre ce programme dans this workbook:
Dim modif As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If modif = True Then
Sheets("Feuil1").Range("A1").Value = "Dernière Révision le " & Format(Date, "dd/mm/yyyy")
End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
modif = True
End Sub

Mais comment on fait dans VBA et comment ensuite on fait pour que ça marche dans le classeur.

Merci par avance
Configuration: Windows XP
Firefox 2.0.0.14

5 réponses

  1. Bonjour,

    La date qui est ecrite en A1 est la date de dernière utilisation, et non la date de dernière modification, c'est à dire que même si tu ne fais aucune modification, le simple fait d'ouvrir le tableau met à jour la date si tu enregistre avant de quitter.

    Tu n'as pas besoin de faire une macro pour ça, une simple formule en A1 suffit: =AUJOURDHUI()

    Par contre, tu peut améliorer le code de la macro avec cette logique:
    Si modifications enregistrées alors mettre a jour la date et quitter, sinon quitter sans enregister.

    Je ne sais pas si je me suis fait comprendre.

    A+.
    1. Mais comment on fait pour mettre dans une cellule de ma feuille la date de modification de la feuille.
      Je m'explique, quand j'ouvre et je ferme la feuille ou le classeur je ne veux pas que la date change. Je veux que la date change juste quand je fais une modification dans mon tableau.
      Merci par avance.
    2. @jbg85a partir du moment ou tu n'auras pas sauvegardé ton classeur, la cellule ne sera pas modifiée ...
  2. cela marchera mieux si tu ajoutes

    Dim Modif As Boolean

    en dehors de tes 2 fonctions, afin que la variable soit connue dans les 2 fonctions
    1. RE,

      Cette procédure dans le code de ThisWorkBook devrait faire ce que tu souhaite
      Chaque fois que tu fais une modif dans une feuille, la cellule A1 de la feuille modifiée est mise à jour.

      A+.
      1. j'ai oublié la procédure

        Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        ActiveSheet.Range("a1").Value = "Dernière Révision le " & Format(Date, "dd/mm/yyyy")
        End Sub
        1. mais où met on cette procédure et comment on fait pour que ça marche?
          Je suis un novis avec VBA
      2. Voilà ce qu'il faut faire:

        Dans le menu outils -> Macros -> Visual Basic Editor
        ou bien appuye sur la touche Alt et la touche F11

        Sur le coté gauche, clic droit dur ThisWorkBook et selectionnes Code

        Dans l'éditeur tu colle la procédure

        Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        ActiveSheet.Range("a1").Value = "Dernière Révision le " & Format(Date, "dd/mm/yyyy")
        End Sub

        Tu retournes dans ta feuille Excel et modifies une cellule, la cellule A1 est mise à jour.
        Choisis une autre feuille, fais une modif et la cellule A1 est mise à jour.

        C'est tout.