Signaler

Afficher la date de modification pour chaque feuille d'un classe [Résolu]

Posez votre question Fizia - Dernière réponse le 17 févr. 2017 à 14:14 par Fiziah
Bonjour,
J'aurais besoin d'afficher en en tête de chaque feuille la date de la dernière modification/enregistrement.
Mais j'ai plusieurs feuilles dans ce classeur qui peuvent donc avoir des date de mise à jour différentes.
J'ai utiliser ceci :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Feuil1").Range("A1").Value = Now
End Sub

Mais le souci avec cette "formule" c'est que dès que je fais un enregistrement quelque soit la feuille la mise à jour se fait seulement sur la feuille 1, je n'arrive pas à les multiplier sur toutes les feuilles.
Merci de votre aide


Utile
+1
plus moins
Bonjour Fizia, bonjour le forum,

Si tu souhaites que seul l'onglet modifié soit affecté :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Sh.Range("A1").Value = Now
End Sub


Si tu souhaites que tous les onglets soient affectés :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim O As workwheet
For Each O In Sheets
O.Range("A1").Value = Now
Next O
End Sub

Cette réponse vous a-t-elle aidé ?  
pijaku 12206Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 13 septembre 2017 Dernière intervention Fiziah - 16 févr. 2017 à 16:11
Et j'aimerais aussi pouvoir exclure certaines feuilles de cet automatisme, si c'est possible.
Combien de feuilles? Quels noms ont ces feuilles?

Quel est le code qui fonctionne?

Choisis plutôt la solution de Pijaku si il y a
Pour l'instant c'est ta solution qui est la bonne...
Répondre
Fiziah 12Messages postés jeudi 16 février 2017Date d'inscription 17 février 2017 Dernière intervention - 16 févr. 2017 à 16:24
4 feuilles sont concernées
leurs noms :
données administratives
indicateurs loi 2002-2
indicateurs patrimoine
indicateurs GDR

Le code qui fonctionne est celui de THautheme :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Sh.Range("C4").Value = Date
End Sub

que j'ai copier dans ThisWorkBook
Répondre
pijaku 12206Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 13 septembre 2017 Dernière intervention - 16 févr. 2017 à 16:28
Donc, tout simplement :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Sh.Name
    Case "données administratives", "indicateurs loi 2002-2", "indicateurs patrimoine", "indicateurs GDR"
        'ici on ne fait rien !
    Case Else
        Application.EnableEvents = False
        Sh.Range("C4").Value2 = Date
        Application.EnableEvents = True
End Select
End Sub


J'ai ajouté Application.EnableEvents = False (et True) parce que sinon la macro part en sucette.
La modification de C4 redéclenche cette même procédure...
Répondre
Fiziah 12Messages postés jeudi 16 février 2017Date d'inscription 17 février 2017 Dernière intervention - 16 févr. 2017 à 16:37
Rien à dire à part merci et bravo c'est nickel !
Magnifique :)
Répondre
pijaku 12206Messages postés jeudi 15 mai 2008Date d'inscription ModérateurStatut 13 septembre 2017 Dernière intervention - 16 févr. 2017 à 16:41
A demain pour la suite ;-)
Répondre
Donnez votre avis
Utile
+0
plus moins
Hello !

J'ai discuté avec ma collègue et finalement elle ne juge pas nécessaire d’apporter ce petit plus.
J'avoue que j'ai été un peu déçue car ne serait-ce que par curiosité....ça m'aurait plu de continuer !!!!
Mais bon je vais rester raisonnable et ne pas vous faire chercher pour rien !
En tout cas merci à vous deux on est très contente de ces améliorations sur notre gros fichier !!
Bonne continuation
Fizia
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !